{New Tool} Crypto for Dynamics 365

It has been a while that there was a new tool being published from my end on Dynamics CRM. One of the recent things that I noticed which was needed was the ability of people to be able to encrypt sensitive/critical information.

This is particularly relevant in some scenarios in Dynamics 365 implementations such as:

  • Storing Credit card information in Dynamics 365
  • Storing bank account details in Dynamics 365
  • Storing sensitive information such as Public service numbers in Dynamics 365(For example Social security number in US, etc.)

In all such scenarios, there is need to encrypt certain fields in addition to field security. Me and fellow CRM community member Simaranjit researched about this and have come up with a set of workflow activities which let you encrypt and decrypt the fields that you wish. Not only that you can choose between two encryption standards:

AES Encryption

AES (acronym of Advanced Encryption Standard) is a symmetric encryption algorithm.

The method looks like this:

  • From the 128-bit key, AES generates 10 keys of 128 bits each.
  • These keys are placed into 4×4 arrays.
  • The plain text is also divided into 4×4 arrays (128 bits each).
  • Each of the 128-bit plain-text items is processed in 10 rounds (10 rounds for 128-bit-keys, 12 for 192, 14 for 256).
  • After the 10th round the code is generated.
  • Each single byte is substituted in an S box and replaced by the reciprocal on GF (2 8).
  • Then a bit-wise modulo-2 matrix is applied, followed by an XOR operation with 63.
  • The lines of the matrices are sorted cyclically.
  • The columns of the matrix multiplication are interchanged on GF (2 8).
  • The sub-keys of each round are subjected to an XOR operation

MD5 Encryption with TES Algorithm

The MD5 algorithm is a widely-used hash function producing a 128-bit hash value. Due to its vulnerabilities, we have combined the MD5 algorithm with another algorithm Triple DES Cryptography to enhance its performance. A configured alphanumeric string is used for computing the hash key.

Here is a video demonstrating the tool:

Here is the download link: Click here

Note: This is one way of encryption/decrypting CRM data and adding additional security on top. CRM provides encryption over the database as shared on following link:  Click here

Hope it helps and Happy CRMing!

ABOUT THE AUTHOR:

clip_image001

Twitter: https://twitter.com/msdynamicsblog
LinkedIn: https://www.linkedin.com/in/deepesh-somani-00296932

Google Play Store:

https://play.google.com/store/apps/details?id=com.dynamicsofdynamicscrm.msdynamicsblog&hl=en

{Quick Tip} Add Record Hyperlink with text in Send Email via workflow in Dynamics CRM

It is a very common scenario to send record URL while sending emails from Workflows in Dynamics CRM.

Ever been in a situation where notifications need to be sent with URL via Email to a user/set of users for example on creation of a new Opportunity.

Using out of box workflow(Settings->Process->New) and Send Email step, this can be achieved easily:

clip_image002

Send Email step Set Properties:

clip_image004

When Email is sent out, it will appear as below:

clip_image006

Notice the way that the record URL does not appear as a hyperlink but full URL.

Here is a simple solution to make record URL appear as Hyperlink:

Navigate back to the Send Email step of the workflow, Click set properties and Select Insert Hyperlink:

clip_image008

Insert Text and select URL as Record Dynamics URL and click OK:

clip_image010

Notice that this time Email body will be generated with hyperlink with a meaningful text:

clip_image012

Remember, Giving attention to Little details creates the best user experience!

Please keep in mind that in internet facing deployments the record URL always points to the external URL. This can be a bit annoying for users as they probably need to authenticate before they can open the record mentioned in the email.

Hope it helps and Happy CRMing!

ABOUT THE AUTHOR:

clip_image001

Twitter: https://twitter.com/msdynamicsblog
LinkedIn: https://www.linkedin.com/in/deepesh-somani-00296932

Google Play Store:

https://play.google.com/store/apps/details?id=com.dynamicsofdynamicscrm.msdynamicsblog&hl=en

{Code Tip} Get record ID using FetchXml for any entity record based on MAX or MIN field value

I had written some posts a while back on Aggregate FetchXml queries here:

https://dynamicsofdynamicscrm.com/2014/07/23/aggregate-fetchxml-queries-for-dynamics-crm-20112013/

https://dynamicsofdynamicscrm.com/2015/10/01/code-tipaggregate-fetchxml-queries-code-for-dynamics-crm/

Recently in a project somebody referred to my query to first get the highest opportunity estimated revenue and then used a second query for getting the record id by passing a condition for highest revenue returned via the first aggregate query.

There is a lot simpler approach and single query which can be used for scenarios like:

“Get the recordid for the record where field is maximum across all records”

or

“Get the recordid for the record where field is minimum across all records”

Here are some examples below with Opportunity and estimated revenue on CRM online trial data:

Opportunity with highest estimated revenue

<fetch top=1>

  <entity name=opportunity>

    <attribute name=name/>

    <attribute name=estimatedvalue/>

    <filter type=and>

      <condition attribute=estimatedvalueoperator=not-null/>

    </filter>

    <order attribute=estimatedvaluedescending=true/>

  </entity>

</fetch>

Output is as below:

clip_image001[4]

Opportunity with lowest estimated revenue

<fetch top=1>

  <entity name=opportunity>

    <attribute name=name/>

    <attribute name=estimatedvalue/>

    <filter type=and>

      <condition attribute=estimatedvalueoperator=not-null/>

    </filter>

    <order attribute=estimatedvalue/>

  </entity>

</fetch>

Output is as below:

clip_image002[4]

However, in practical scenarios it is always good to do a comparison with second highest or second lowest Opportunity estimated revenue(even more or can filter by some id fields/etc.).

Top 2 opportunities with highest estimated revenue

Output i

<fetch top=2>

  <entity name=opportunity>

    <attribute name=name/>

    <attribute name=estimatedvalue/>

    <filter type=and>

      <condition attribute=estimatedvalueoperator=not-null/>

    </filter>

    <order attribute=estimatedvaluedescending=true/>

  </entity>

</fetch>

Output is as below:

clip_image003[4]

Bottom 2 Opportunity with lowest estimated revenue

<fetch top=2>

  <entity name=opportunity>

    <attribute name=name/>

    <attribute name=estimatedvalue/>

    <filter type=and>

      <condition attribute=estimatedvalueoperator=not-null/>

    </filter>

    <order attribute=estimatedvalue/>

  </entity>

</fetch>

Output is as below:

clip_image004[4]

Hope it helps and Happy CRMing!

ABOUT THE AUTHOR:

clip_image001

Twitter: https://twitter.com/msdynamicsblog
LinkedIn: https://www.linkedin.com/in/deepesh-somani-00296932

Google Play Store:

https://play.google.com/store/apps/details?id=com.dynamicsofdynamicscrm.msdynamicsblog&hl=en

{Dynamics 365 Enhancements} Good reads from the CRM community

This blog is part of the series which I will use to cover all interesting enhancements coming in Dynamics 365.

People often ask me how can they start blogging and then keep maintaining to write. The trick is very simple!

clip_image001

In this post, I am going to cover the knowledge and good reads about Dynamics 365 from CRM community.

A great article from Nishant on Dynamics 365 Apps: https://nishantrana.wordpress.com/2016/11/03/create-apps-in-dynamics-365-using-new-app-designer-and-site-map-designer-in-dynamics-365/

Learn about the new Business rules visual designer here:

https://nishantrana.wordpress.com/2016/11/02/new-visual-designer-for-business-rules-in-dynamics-365/

You must have read about Editable grids, if not its summed up by really well here by Nishant:

https://nishantrana.wordpress.com/2016/11/01/quick-walkthrough-editable-grid-in-dynamics-365/

Fellow MVP Debajit has more interesting details to read here on Editable grids:

https://debajmecrm.com/2016/11/05/dynamics-365-quick-tips-rearrange-columns-on-the-fly-and-maintain-view-groupings-and-switch-display-mode-in-dynamics-365-editable-grids/

Following up, a set of new out of box actions that are now readily available for Dynamics CRM:

https://debajmecrm.com/2016/11/03/dynamics-365-new-features-explore-the-new-oob-actions-available-with-dynamics-365/

Very interesting read about Azure Logic apps by Simaranjit here:

https://crmazurecomponents.wordpress.com/2016/11/13/azure-logic-apps-twitter-to-facebook/

A look at preview feature for Organization insights here:

https://crmazurecomponents.wordpress.com/2016/11/03/dynamics-365-preview-feature-organization-insights-dashboard/

This blog from MVP Neil on Business process flows enhancements is not to be missed:

https://neilparkhurst.com/2016/11/06/dynamics-365-business-process-flows/

Do not forget, Public beta for Dynamics 365 SDK is released : https://marketplace.visualstudio.com/items?itemName=DynamicsCRMPG.MicrosoftDynamicsCRMDeveloperToolkit

Hope you liked the power of CRM community.

clip_image002

Hope it helps and Happy CRMing!

ABOUT THE AUTHOR:

clip_image001

Twitter: https://twitter.com/msdynamicsblog
LinkedIn: https://www.linkedin.com/in/deepesh-somani-00296932

Google Play Store:

https://play.google.com/store/apps/details?id=com.dynamicsofdynamicscrm.msdynamicsblog&hl=en

{Dynamics 365 Enhancements} Add Notification Recommendations to your Entity forms using script

This blog is part of the series which I will use to cover all interesting enhancements coming in Dynamics 365.

Scenario: On Account form, if user fills in the Telephone field – suggest a recommendation to set Contact preference by Phone field. If user selects yes, set Contact by Phone option to allow.

Scenario by Graphics:

· On change of phone field, CRM shows a recommendation tooltip:

clip_image001

· When you click the information icon, CRM gives you a recommendation:

clip_image002

· If you pick Apply, CRM will do the updating to the field as required:

clip_image003

Great isn’t it?

Here is the link describing the new Client side scripting function: https://msdn.microsoft.com/en-us/library/gg334266.aspx#BKMK_addnotification

And here is the script for this one (Register it on change event of Phone field):

function addPhonePreferenceNotification() {

var myControl = Xrm.Page.getControl(‘telephone1’);

var telephone= Xrm.Page.data.entity.attributes.get(‘telephone1’);

var phonePreference = Xrm.Page.data.entity.attributes.get(‘donotphone’).getValue();

if (telephone.getValue() != null) {

var actionCollection = {

message: ‘Set the Contact Preference for Phone to Allow?’,

actions: null

};

actionCollection.actions = [function () {

Xrm.Page.data.entity.attributes.get(‘donotphone’).setValue(false);

myControl.clearNotification(‘my_unique_id’);

}];

myControl.addNotification({

messages: [‘Set Phone Preference’],

notificationLevel: ‘RECOMMENDATION’,

uniqueId: ‘my_unique_id’,

actions: [actionCollection]

});

}

else

console.log(“Notification not set”);

}// JavaScript source code

Hope it helps and Happy CRMing!



Check this out

ABOUT THE AUTHOR:

clip_image001

Twitter: https://twitter.com/msdynamicsblog
LinkedIn: https://www.linkedin.com/in/deepesh-somani-00296932

Google Play Store:

https://play.google.com/store/apps/details?id=com.dynamicsofdynamicscrm.msdynamicsblog&hl=en

{Dynamics 365 Enhancements}New Visual Designer for Business Process Flow in Dynamics 365

This blog is part of the series which I will use to cover all interesting enhancements coming in Dynamics 365.

In Dynamics 365 we have new visual designer for Business Process flows.

Here is a walkthrough for Business Process flow:

· Creating a new Sales Process on Lead entity:

clip_image001

· New editor will open up:

clip_image003

· Add Step to add further fields after selecting a Stage:

clip_image004

· After adding multiple steps in the stage, It will appear as below:

clip_image005

clip_image007

· For Adding a conditional branch Select +Add button and choose Add Condition:

clip_image008

· A + Tile will appear, Click on it:

clip_image009

· A condition box is visible (Right arrow is if condition is true part flow, wrong arrow shows condition is false part flow):

clip_image011

· Selecting true conditional flow:

clip_image013

· Click Add Stage to add a stage:

clip_image014

· Finally, will appear as below:

clip_image016

Want to document this?

No worries, just hit the snapshot button:

clip_image017

And here is an image for documentation available downloaded for you:

clip_image019

Great stuff Microsoft!

An old colleague of mine and well known Blogger on CRM Nishant has done a step of step for the new visual editor for Business rules here:

https://nishantrana.wordpress.com/2016/11/02/new-visual-designer-for-business-rules-in-dynamics-365/

Hope it helps and Happy CRMing!



Check this out

ABOUT THE AUTHOR:

clip_image001

Twitter: https://twitter.com/msdynamicsblog
LinkedIn: https://www.linkedin.com/in/deepesh-somani-00296932

Google Play Store:

https://play.google.com/store/apps/details?id=com.dynamicsofdynamicscrm.msdynamicsblog&hl=en

{Dynamics 365 Enhancements} Social pane improvements in Dynamics 365

This blog is part of the series which I will use to cover all interesting enhancements coming in Dynamics 365.

One of the most common requirement that is asked for CRM Social pane was ability to be able to order by different dates on Activity part of the social pane.

Let us have a look at Dynamics 365 social pane:

clip_image001

Notice the highlighted element available as an arrow on the social pane. This control now lets you order based on dates available on the activities.

What if I want to change it? Well you can. Just go to form editor, double click notes control and select Activity wall tab:

clip_image002

Great stuff, keep following to explore more interesting topics in Dynamics 365.

Hope it helps and Happy CRMing!



Check this out

ABOUT THE AUTHOR:

clip_image001

Twitter: https://twitter.com/msdynamicsblog
LinkedIn: https://www.linkedin.com/in/deepesh-somani-00296932

Google Play Store:

https://play.google.com/store/apps/details?id=com.dynamicsofdynamicscrm.msdynamicsblog&hl=en