Sonoma Partners Microsoft CRM and Salesforce Blog

Dynamics 365 – Email Engagement

Continuing with our posts regarding the release of Dynamics 365, next up is the new Email Engagement functionality Microsoft has added to the core product.  Additionally, head over to the CRM Roadmap site, or the CRM What’s New site to see more of the features that have recently gone live. 

Email Engagement is the ability to see tracking statistics about emails that are created in, and sent out of Dynamics 365.   Or in other words, Email Engagement enables monitoring of activity taken by the recipient of the email.  Specifically you can monitor when the recipient:

  • Opened the message
  • Clicked on a link
  • Opened an attachment
  • Replied to the email

You also have the ability to schedule when the email should be sent based on when you think the most effective delivery time is for your message.  You can also set alerts to remind you when you should follow up on the email.  You can view additional information on Email Engagement from Microsoft via this link.

We’ll go into more detail in using Email Engagement below, but first lets discuss how to get it enabled.

Enable Email Engagement

In order to enable Email Engagement for Dynamics 365, you need to accept the Preview Terms and Conditions.  To do this, navigate to Settings –> Administration –> System Settings.  Then click on the Previews tab, and make sure you’ve checked off that you agree to the license terms, and enable Email Engagement.

image

On top of enabling the preview feature, you’ll also need to enable Server Side Sync for SharePoint and Exchange in Dynamics 365, and enable OneDrive for Business in Dynamics 365.

You’ll also have to enable document management for the Email entity, which can by done by going to Settings –> Document Management –> Document Management Settings.  Check the Email checkbox and you should be good to go here.

Finally,  you need to accept the Email Engagement terms and conditions in Dynamics 365 and set some other options (cards etc.).  This can be completed by going to Settings –> Relationship Insights.  With the initial screen, you’ll have to click on the “I have read and accept these terms and conditions” checkbox and click on Continue.  Then click on the Email Engagement tab, and click on the checkbox by “By enabling this feature, you consent to share your data…” and click on “Begin Setup.”

image

The setup process will then begin and could take some time, but once it completes, you’ll have to click on another checkbox next to “Turn on email engagement for your organization” and click on Save.  You should now be good to go to use Email Engagement!

 

Using Email Engagement

Note that Email Engagement only works for emails that are sent out of Dynamics 365 (versus emails sent from Outlook / Exchange that are tracked in CRM).

The first thing you’ll need to do is simply create a CRM email as you would normally.  However, now when you do so, you’ll see additional content on the email message in an Email Engagement section.

image

When new emails are created, they’re automatically followed.  You can click on the DON’T FOLLOW link to not follow this particular email.  However, there is a “Follow Email” field on the Contact that you can update to “Do Not Allow” and when doing so, the next time you create an email in Dynamics 365, by default the email will be set to not be followed.

image

image

image

You can click on View Preferences to see which recipients on the email have their setting set to Do Not Allow, and you can also attempt to retry following the email should the recipients’ preferences be updated.

Note:  That there seems to be a bug with this functionality currently at the time of this blog post.  When the email is initially created, it still shows that the “Recipient Activity will be followed” when the email form opens, regardless of the “Follow Email” preference on the contact record.  If you click on DON’T FOLLOW and then click on FOLLOW, that’s when you’ll see the indication above that one or more of the recipients prefer to not have their email activity followed.  A Microsoft Connect feedback item has been logged here.

From this area, you can also specify a time to actually send the email if you don’t want it to be sent immediately (based on research that you may have done that indicates best time to send specific communication).  Clicking the SEND LATER button will pop up a dialog that will allow you to pick a date and time for the email to be sent.

image

If you click on SET REMINDER you’re able to set one of the following reminders:

  • If a reply isn’t sent
  • If the email isn’t opened
  • Remind you regardless of lack of recipient activity

image

Both reminders and email scheduling must be done in the future, and the system will prevent you from setting them up for the past.  Once they’re setup, you’ll see the Email Engagement section change slightly which will allow you to modify the settings you setup, as well as remove them should you desire.

image

When you’re in CRM and looking at the relationship assistant, you’ll see a card for the reminders you setup that executed.  In this example, since the email wasn’t opened by the date specified, a card shows up for me indicating as such.  I can open the recipient, open the email, snooze the reminder card for 12 hours, or dismiss the reminder card.   Out of the box, these appear to only display on the Dashboards, and not on the actual Contact record.

image

 

Attachments

You have the ability to not only follow activity on a particular email (opens, clicks, replies), but you can also follow activity on attachment views.  Each time an attachment is opened is counted as an attachment view.

In order to follow attachment activity, you must first save your email (don’t send it).  Then click on the + sign in the Attachments sub grid.

Once you Browse to the file and click on Attach, you’ll see a new Follow button.  After you click on the Follow button (which will upload the attachment to OneDrive for Business which you configured earlier), you’ll have the option to stop following, or simply close out of the attachments dialog.  You can always get back to the dialog to follow, stop following, and remove the attachment by clicking the attachment hyperlink in the attachment sub grid on the email form should you decide to do so later.

image

image

image

 

Recipient Activity

When you’re on an email that’s being followed, you’ll notice a new area Recipient Activity that shows a summary view of the number of opens, attachment views, link clicks, and replies.  Directly below the summary you can see each individual detailed activity which is rolling up to that summary.  Note:  I had to track the reply from the recipient for it to be counted as a reply (Dynamics didn’t automatically notice that there was a reply in Exchange and instead needed the reply in Dynamics to count).

image

You’ll notice that the location of where the email was opened is also tracked.  In this case I just opened it from my laptop, but it would also show if I opened it from my phone as well.

Recipient activity is also visible on dashboards in the new Relationship Assistant area as a separate card.  This is also displayed on the new Dynamics 365 tablet and phone apps, you can see the same card displayed in the new Landing Page

image

image image

The Email Engagement functionality extends a little bit beyond the actual email that was sent.  If you used an Email Template, Dynamics 365 will track the opens and replies that were made to emails that used that template.  Dynamics 365 will also let you know if a particular template is recommended due to past performance.  Below you can see that Dynamics 365 is recommending the Contact Reconnect email template due to past recipient activity. 

image

When a user goes to create a new email in the future, the recommended templates will be easily visible to select from via the green star indicator.

image

Topics: Microsoft Dynamics 365 Microsoft Dynamics CRM Microsoft Dynamics CRM Online

Dynamics 365 & Flow – 3 Simple Steps to Email Sentiment Tracking

If you’re not familiar with Microsoft Flow yet, it is definitely worth checking out.  It allows you to easily connect many different applications, one of which is Dynamics 365, to each other.  Earlier this year, the ability to connect to Microsoft’s Text Analysis API was added which takes in a string of text and returns a sentiment score from 0 to 1 with 0 being negative and 1 being positive.  This means we can painlessly connect Dynamics 365 to the Text Analysis API which I will walk through in this post in the form of Email sentiment tracking.

The first thing we need to do is create a custom decimal attribute on the Email entity to track sentiment.

image

Once that attribute is created, navigate to Microsoft Flow and create a new blank Flow.  In the “search for more triggers” box, type “create a record” and choose the Dynamics 365 option.  You will need to authenticate to your Dynamics 365 environment and then select your Organization Name from the list.  Once that is done, select Email Messages from the Entity list as well.

image

Next, click “+ New step” and select “Add an action” and in the “Search for more actions” box, type “sentiment” and select the “Cognitive Services Text Analytics” option.  You will then need to sign up for Cognitive Services and provide your API Key to Flow.  It is free to try for up to 5,000 API calls per month.

Once you provided your Cognitive Services details, put your mouse cursor in the “Text to analyze” box and a sidebar should show up with a list of options like so:

image

Find “Description” in the list and select it.

Next, click “+ New step” and “Add an action” again.  Search for “update a record” and choose the Dynamics 365 option.  Again select your Organization and Email Messages.  Highlight the “Record identifier” box and choose Email Message from the sidebar list of options.

image

Then click the “Show advanced options” at the bottom of the Update a record section.  This will expand the section with a big list of Email attributes.  You should be able to find the custom Sentiment attribute that we created in the beginning of this post. 

Highlight the Sentiment text box and select Score from the sidebar list of options.

image

That’s it!  The Flow is complete so you can give it a name at the top of the page and then click “Create flow”.

In the list of Flows, make sure the toggle control is set to On.

image

Now in your Dynamics 365 environment, create a new Email record and save it.

Back in Flow, click the circle icon with an ‘i’ in the middle.

image

This will show a history of runs for the Flow.

image

Once you see that your Flow was successfully ran, go back to your Email record in Dynamics 365 and you should see the Sentiment field populated.

image

Now all emails created in Dynamics 365 will have a sentiment value populated.  You could even extend it further and add a native Rollup field to Contact to store the average Sentiment across all emails that were sent by the Contact.

There is a caveat that the Text Analysis API is only free for 5,000 calls per month.  Below is the pricing chart taken from the Cognitive Services pricing page:

image

Topics: Microsoft Dynamics 365 Microsoft Dynamics CRM Online

Enabling Configurable Plugin Trace Levels

As we mentioned last spring, Dynamics 365 now supports tracing messages from plugins without requiring an error to be thrown.  However as plugins become more complex, we often find ourselves wishing for more granular control over the level of detail traced without requiring code recompilation.  With these requirements in mind, we will build an elegant solution that has minimal impact on performance.

First, we'll define an enum that introduces the different levels of tracing we want to support.

This should start to look familiar if you use log4net or similar logging frameworks.  The different levels (Debug, Info, Warn, Error, and Fatal) provide the granularity we are looking for when configuring how much detail we want in our Plugin Trace Logs.  The other two values (All and Off) provide a more explicit way of completely enabling or disabling tracing.

Next we’ll add an internal class to our plugin assembly to wrap all of our trace calls.

The main constructor starts by getting the ITracingService from the passed in IServiceProvider and storing it in a field for later use.  It then goes on to look for a shared variable on the IPluginExecutionContext which will define the minimum tracing level to trace.  If that shared variable doesn’t exist, it defaults to the minimum level passed in to the constructor.

Now we’ll add a method that will actually perform the tracing.

The Trace method takes a level, a format, and an array of arguments.  If the level is at or above the minimum, the format and arguments are combined and then passed to the previously saved _tracingService.  We prefix the message with the trace level, to provide extra detail.  This could be further enhanced to provide timestamps if you are investigating performance concerns.

Finally, we’ll add a few convenience properties and methods to our Tracer class just to make it easier to use.

The properties provide a quick way to check and see which trace levels are enabled.  For simple messages there isn’t a need to check these properties, but some more detailed traces have to build up a complex messages.  In these cases, it is worth it to check and see if the targeted level is enabled before building the message.  The methods here are simple shortcuts for Trace with the level specified as the method name.

Now we’re ready to write a plugin that takes advantage of our new class.

While this plugin’s logic is very contrived, it demonstrates how to use the Tracer class.  There are examples of tracing at different levels and checking which levels are enabled before composing a more complex message. 

We can register this plugin to run during the Create of a contact using the following configuration:

BusinessLogicPluginStep

If the plugin is left registered by itself, it will always be configured to run at the “Info” trace level (The simpler Tracer constructor it uses defaults to TraceLevel.Info for the defaultMinimumLevel).  If we want to change the level without making code changes, we’ll need to introduce another plugin.

The TraceConfigurationPlugin uses the Unsecure Configuration value to set the TracingLevel shared variable on the execution context.  As long as we register this plugin to run before any of our other plugins, it can specify the level the plugins following it should use.  We could even register multiple steps for the same message with different Execution Order values if we wanted to have different trace levels for different plugins.

Here is an example of how we could register this plugin to run before the BusinessLogicPlugin and set the trace level to “Debug”:

TraceConfigurerPluginStep

Now we can use the Tracer in all of our plugins and feel comfortable adjusting the trace level as more details are needed during troubleshooting.  No additional API calls are made to read the tracing configuration values, so this will have a minimal impact on performance.

To see how to enable tracing and where to read the logs, please reference our earlier blog post.

Topics: CRM Best Practices Microsoft Dynamics CRM Microsoft Dynamics CRM 2016 Microsoft Dynamics CRM Online

Dynamics 365 – Updates to Business Rules and Actions

Continuing with our posts regarding the recent release of Dynamics 365, next up are the changes Microsoft has added to Business Rules  Workflow Actions.  Additionally, head over to the CRM Roadmap site, or the CRM What’s New site to see more of the features that have recently gone live. 

Business Rules

Like Business Process Flows, Business Rule were introduced in CRM 2013, and have received some updates in the Dynamics 365 release.  First and foremost is the fact that Business Rules will utilize the new Visual Process Designer that was introduced with Dynamics 365.

For each component, as you’re building out the rule and adding in additional conditions and actions, you’ll see a text definition representation of your logic.  As your Business Rule is being built out, you can see the logic grow over time.

Also added with Dynamics 365, is a new “Show Recommendation” Action.  With this action, an icon will be added next to a field that will provide some information and show a message that the user can take action upon.  During definition of the Show Recommendation action, you provide the message to display along with the action that will occur if the user clicks on “Accept” on the recommendation. 

For example, if you have an Opportunity where the customer indicated the purchase timeframe is immediate, and their budget amount is > $50,000, then you may want to recommend having the salesperson update the Rating to Hot.

See below for how the Business Rules look in the new Visual Process Designer with the Recommendation action, and the text based representation of the rules.

image_thumb41

When on an Opportunity that meets the criteria of the Business Rule conditions, the recommendation will be displayed and if the user clicks on Apply, then the Action defined in the Show Recommendation component will be executed.  In this case, we are setting Rating to Hot.

image_thumb46

Additional Actions

Microsoft also added some new out of the box Actions that can be used in Processes (Workflows, Dialogs, and Actions). 

  • Add (Case) to Queue
  • Add user to Record Team
  • Apply Routing Rule (to Case)
  • Calculate Actual Value (of Opportunity)
  • Close Opportunity
  • Get Quote Products from Opportunity
  • Get Sales Order Products from Opportunity
  • Lock Invoice Pricing
  • Lock Sales Order Pricing
  • Qualify Lead
  • Remove User from Record Team
  • Resolve Incident
  • Resolve Quote
  • Revise Quote
  • Unlock Invoice Pricing
  • Unlock Sales Order Pricing

The following two Workflow Actions were existed before the release of Dynamics 365:

  • Set Process
  • Set Word Template

image_thumb32

While Microsoft hasn’t included workflows in the new Visual Process Designer (yet), these new actions will go a long way to allowing business analysts to extend the system without code.  The stage is also set for Microsoft to extend the functionality of the Visual Process Designer in an upcoming release to include the ability to more visually create and edit workflows.

Topics: Microsoft Dynamics 365 Microsoft Dynamics CRM Microsoft Dynamics CRM Online

New Dynamics 365 Apps for iOS and Android Authentication Issues

Today's blog post was written by Neil Erickson, Development Principal at Sonoma Partners.

Our team at Sonoma Partners have been using Microsoft’s mobile applications for a few years, including the native phone and tablet clients. Over this past weekend we received reports from a few users that they were now unable to sign in properly. After investigating, we determined that Microsoft recently updated their apps to reflect the most recent version, Dynamics 365. After these updates made their way to user’s phones, the follow error was shown.

image

Looking closer, when the new apps try to authenticate the following error is logged on the ADFS server.

Microsoft.IdentityServer.RequestFailedException: MSIS9236: The OAuth authorization request contains invalid client or redirect URI. Failed to process the request. ---> Microsoft.IdentityServer.Web.Protocols.OAuth.Exceptions.OAuthInvalidClientRedirectUriException: MSIS9224: Received invalid OAuth authorization request. The received 'redirect_uri' parameter is not a valid registered redirect URI for the client identifier: 'ce9f9f18-dd0c-473e-b9b2-47812435e20d'. Received redirect_uri: 'ms-auth-dynamicsxrm://com.microsoft.dynamics.iphone.moca'.

This error tells us that the new version includes some RedirectUri's that were not present in previous versions, and are now required for proper authentication.

So, you will need to add these RedirectUri's to the ADFS client even if your Dynamics CRM / Dynamics 365 server version has not changed. This can be accomplished by removing the existing ADFS Client and adding it back with the cmdlet currently on this TechNet article.

Topics: Enterprise Mobility Microsoft Dynamics CRM 2016 Microsoft Dynamics CRM Online

Dynamics 365 – Updates to Business Process Flows

Continuing with our posts regarding the recent release of Dynamics 365, next up are the changes Microsoft has added to Business Process Flows.  Additionally, head over to the CRM Roadmap site, or the CRM What’s New site to see more of the features that have recently gone live. 

Business Process Flows

Business Process Flows were first introduced to Dynamics CRM back in the CRM 2013 release, and enhanced in 2015 and 2016.  Continuing the trend, there have been enhancements in the Dynamics 365 release.

Security Updates

First off, one major change is that for every Business Process flow you have, you’ll see these show up in native Security Roles in a Business Process Flow tab.  From this tab you’re able to provide Create/Read/Write/Delete/Append/Append To permissions to your BPF.    This is because going forward, every business process you create and activate becomes a table in the database just like any other entity. Every instance of that process (applied to a record) is a row in the table.

For example, you may want certain users to only see the Lead to Opportunity Sales Process, but other users you want to be able to not only see the process, but also move between stages of the process (Write permissions).  You’ll need to provide Append permissions if you want a user to be able switch processes and Append the process to the record they’re on.   The security on the BPF tab does not drive the ability to update the fields in the stage – that’s driven through normal field level security and security role permissions that have existed pre-Dynamics 365.

Note:  Your process will not show up in this tab until you Activate the process.  If you Deactivate it after updating security roles, the process will remain in the available in this tab so you will NOT need to go back and update your security roles again.  It’ll only be removed from the security role tab once you delete the process.

image_thumb3

Additional Status Reasons

Business Process Flows that are active on record can now be abandoned.  This can be done via the Process dropdown, and business processes can be queried using Advanced Find (an entity will appear for each BPF you have) with status reasons of Active, Finished, and Aborted. Users can also mark a process as Finished if it’s in the last stage of the process.  Abandoned processes change the process color to gray while Finished processes remain green.  You can reactivate Abandoned and Finished processes.

image_thumb12

image_thumb17

image_thumb18[1]

Your abandoned processes will still be viewable via the Switch Process dialog, if you click on the Archived Processes link. You can then select the abandoned/archived process to view it.

image_thumb12[1]

image_thumb13

Concurrent Processes

With Dynamics 365, you’re no longer confined to having a single Business Process flow active at a time for a record.  You can now have concurrent processes that run in parallel without conflict.  Different users or departments may be working multiple processes on the same record at the same time, and the state of the process is maintained. 

When you switch a process, you’ll be able to see what date/time each process  was started on for the record you’re on.

image_thumb3[1]

          Workflows

          Business Process flows now include additional actions that can be taken versus simply updating fields (steps) within as stage.  Stages can now execute workflows with a trigger of Stage Entry, or Stage Exit (you may want some workflows to send notifications when users enter a stage, and others to send notifications upon users existing a stage).

          Here’s a screenshot of the workflow component on the new Visual Process Designer (described in more detail here).  Note that for the workflow to show up to be selected in your Business Process, it has to be set to run On Demand, has to be the same entity as the Business Process stage, and has to be activated.

          A great use case of using workflow is to have it at the completion of a Business Process (therefore Stage Exit of the final stage), that will then use the Perform Action workflow step, to Set Process.  You can then automatically kick off the next Business Process as the current Business Process ends.  For example you can have the completion of a specific Business Process on an Opportunity kick off a workflow that creates a Case, and activates a Business Process on that newly created Case.

          image_thumb18

          Topics: Microsoft Dynamics 365 Microsoft Dynamics CRM Microsoft Dynamics CRM Online

          Dynamics 365 – Visual Process Designer

          Continuing with our posts regarding the recent release of Dynamics 365, next up is discussing the new Visual Process Designer.  Additionally, head over to the CRM Roadmap site, or the CRM What’s New site to see more of the features that have recently gone live. 

          Visual Process Designer

          With Dynamics 365 for Sales, a new drag and drop WYSIWYG designer has been created for creation and management of business process flows, task flows, and business rules.  When you open up the process, you’ll see a designer such as the following.  As you start adding in your stages and steps, you’ll be able to set the properties for the different pieces along the way for the component you select in the visual designer.

          image

          In the designer, there’s a toolbar at the top that gives you the ability to take the following actions:

          • Add
          • Cut
          • Copy
          • Paste
          • Delete
          • Snapshot – This will create a picture of the rule that you can send over via email for a review process
          • Connector

          In the bottom left corner you’ll see a collapsible mini map that will allow you to quickly navigate around the designer for those large business processes, task flows and business rules.

          At the top of the designer you’ll notice a Validate button.  You can click on this button to have any errors in the process flow, task flow, or business rule clearly displayed.  It’ll highlight the component and property of the component that has the error allowing you to quickly resolve any issues.  One interesting note about validation in the designer is that when you click it, it’s always on.  So if you fix the error you’ll see the error change to “Validation successful” immediately.  You can toggle validation off if you don’t want to see that message every time you add a new component.

          image

          As I was using the designer, one thing I noticed was that if I made changes in the designer, I had to get used to clicking the Apply button in the bottom right corner of each component versus clicking the Save button at the top of the process.  If you don’t click Apply first, your changes to that component will not be saved and you could get validation errors or unexpected results in your process.  Therefore my recommendation would be to get used to always clicking Apply even if you aren’t sure if you updated a component.

          Pre-Dynamics 365 processes are able to use the new designer and the new features introduced in Dynamics 365.  In other words, this functionality is backwards compatible.

          Topics: Microsoft Dynamics 365 Microsoft Dynamics CRM Microsoft Dynamics CRM Online

          Dynamics 365 Editable Grids

          As with any release, the recent release of Dynamics 365 has introduced a bunch of new features.  Head over to the CRM Roadmap site, or the CRM What’s New site to see first hand the features that have recently gone live.  In this blog we’ll talk about one of those new features we’re really excited to see get added to the project:  Editable Grids.

          Editable Grids

          One of the most sought after features since I’ve been working on Dynamics CRM is editable grids.  The mantra of Dynamics CRM for the past 15 years has been read only lists/views, and a single record form to modify the data.  In most of our implementations, we’re asked to create an editable grid to allow users to more quickly modify data.  We even took our client specific editable grid solution, made it generic, and provided a free version of it for Dynamics CRM 2011/2013/2015/2016 for the community to download from our tools site.

          However, Microsoft has released the ability to turn any grid in Dynamics CRM into an editable grid with their latest release of Dynamics 365 for Sales.  Upon this announcement, I believe I heard all of the developers at Sonoma Partners let out a loud cheer as working with editable grids is a pretty challenging task.

          Note that this new editable grids functionality is available for sub grids (that appear on forms) as well as home grids (the grid that shows when you select an entity from the Site Map, or when you expand a sub grid on a form to be full sized).  And as you can see below, editable grids are supported on the web, phone and tablet clients.

          What’s supported on the editable grids?  Is everything you’re used to with a read only grid and record form supported?  The quick answer is that yes, everything you can do with a read only grid you can do with an editable grid (plus more):

          • In line editing
          • Sorting
          • Grouping (see below)
          • Filtering
          • Pagination
          • Calculated and Rollup Fields
          • Run time resize/move columns (see below)
          • Auto Save / Manual Save (see below)
          • Toggle between read only and editable grid (see below)
          • Filtered lookups
          • Chart panel interaction
          • Command bar interaction
          • Business Rules (e.g., show error messages, set field value, set business required, set default value, lock or unlock)
          • JavaScript

          Enabling Editable Grids – Home Grid

          To enable the editable grid for a home grid, first go to customizations for the entity at Settings –> Customizations –> Customize the System –> Entities, and then click on the Controls tab for an entity you want to configure.  In my example below, I’m working on the Account entity.

          image

          By default, the Web/Phone/Tablet will all be using the legacy read only grid.  However if you click on the Add Control link, you can select the Editable Grid control in the dialog that pops up, and click on Add.

          image

          You’ll then have the option to enable the editable grid for the Web, Phone, and/or Tablet experiences by selecting the appropriate radio buttons.  For now, we’ll just enable it for the Web.

          image

           

          Enabling Editable Grids – Sub Grid

          For a Sub Grid, navigate to the form that the sub grid is on and find the sub grid you want to make editable.  Select the sub grid on the form, and click on the Change Properties button in the ribbon.  In the dialog that appears, select the controls tab, and click on the Add Control link.  As with the main grid, you can add the Editable Grid control, and then configure in the sub grid properties dialog which form factor the editable grid applies to (web, phone, and/or tablet).  We’ll choose just Web once again for the Contact sub grid on the Account form.

          image

          Configuring the Editable Grid

          Whether you enabled a Main Grid or Sub Grid to use the Editable Grid control, the configuration is the same.  Once you add the Editable Grid control, you’ll see an Events tab appear.  This allows you to configure JavaScript code that will trigger on certain events that occur in the grid.

          image

          This is very similar to the Form Properties dialog where form JavaScript libraries are configured at the form level.  The events currently exposed by the API for editable grid JavaScript libraries are:

          • OnChange (when a particular field is changed)
          • OnRecordSelect (when the user selects a record)
          • OnSave (when a record is saved)

          In addition to adding JavaScript to your editable grid, when you have the Editable Grid row selected in the Controls tab, you’ll see some configurable options at the bottom of the dialog.

          image

          The Add Lookup link allows you to configure how a lookup will work in the grid.  You don’t have to add a configuration option for a lookup.  However, with this option, this allows you to configure filtered lookups for a specific view, just like you’re able to do on the form.  Therefore if you have filtered lookups on the form, it’s strongly recommend you configure your lookups on the editable grids via the Add Lookup link.

          image

          The Nested Grid View and Nested Grid Parent ID are used to display a grid within a grid.  Note that this functionality is only available on and Tablet.  Clicking on the pencil icon next to these settings will allow you to select the entity to be shown in the nested grid, along with the parent lookup field on which the related records should be fetched.

          The Group by Column setting allows users to select the Group By option on the top of the grid when actually working within an editable grid.  Group By is different than sorting on a column in that it will put records into an expandable control based on the field that you have grouped by.  Only the fields in the current view will be options in the Group By dropdown.  Groups can be expanded or collapsed.

          image

          Using the Editable Grid

          After you have your grid configured, your users can simply click into a field to be able to edit the value in the field without opening the record form.  You can also quickly change fields via the keyboard (tab) or mouse.

          To save the updates you made to the record, you can simply click off to another record, or click on the Save icon in the top right corner of the grid.

          image

          Users can also change the grid between the new editable version shown above, and the classic read only version via the Show As button in the toolbar.

          image

          Also note that the columns in the grid can be reordered per user per view.  The column order, group by setting and sort order is persisted throughout the application until the user clears their browser cache.

          Considerations

          With the new editable grid functionality, there are a handful of tips and considerations to think about as you’re configuring your CRM deployment.

          • The Editable Grid doesn’t respect read-only fields on the form since that isn’t a legitimate way to control security.  To prevent users from editing these fields, you’ll need to either add field level security to the field, not put that field in the view, or write JavaScript (this will be covered in a future developer related blog post).
          • The Editable Grid version of a sub grid takes up more space than the read only grid (especially if you enable the Group By feature).  Allow for a larger sub grid to make sure your users see the same amount of data they used to.
          • Enabling editable grids on a home grid is a global setting meaning that wherever you see that entities home grid it’ll show as an editable grid (e.g., tiles clicked from anywhere on the Site Map, sub grids that are expanded to the full grid).
          • Enabling editing on a sub grid is a per sub grid basis meaning that every sub grid on every form and dashboard must have their editable setting enabled individually.  You could have the situation where the sub grid doesn’t have the editable grid enabled, but the home grid for that sub grid does have the editable grid enabled.  In this scenario, if the user clicks to expand the sub grid to the full grid, they’ll go from a read only grid to an editable grid.
          • Some fields are not editable in the editable grid:
            • Fields from related entities
            • StateCode
            • Customer fields (e.g., on an Opportunity or Case)
            • Composite fields
            • Party List fields (e.g., the To field on an Email)
            • Field Level Secure fields (if your field security profile prevents you from editing the field)
          Topics: Microsoft Dynamics 365 Microsoft Dynamics CRM Microsoft Dynamics CRM Online

          CRM Online 2016: Exporting a Data Import Template Error

          Today's blog post was written by Keith Mescha, Principal Architect at Sonoma Partners.

          Recently, I was working with a client to setup some test users in a sandbox for integration testing around assigning users to records in CRM. They were struggling with how to get this subset of users into the sandbox without having to go through the provisioning and 0365 process of creating the users in CRM. 

          My advice was to just use an import template for the user entity and import the users you want for testing. The users will get created in the org as "disabled" and not consume a CRM license. They would then be able to test the integration and ensure it was working as intended.

          Not too long after providing this advice, my client replied that they could not download the template due to the error, “A duplicate column heading exists.” The error didn't say what was duplicated, and they couldn't even get to the downloaded template to see, so they were not sure what to do next.

          Keith 1a

          Keith 2a

          I had a hunch, so I started to look at the customizations for the particular entity. To my surprise, after a bit of digging I noticed that we had three fields on the user entity in CRM all with the display name “Manager.”

          Keith 3a

          I could only assume that this was the issue as it uses the display name for the column headers in the import template, so I changed two of them temporarily and republished the customizations.

          Keith 4

          With that change, they were able to download the template just fine. The error was pretty descriptive, but they could not figure out what the issue was. Of course, a customization best practice is to not have three  fields with the same name. Additionally, after discussing with the customization team on this project, we quickly realized that we had created a custom field when there was a native field that did the same thing, so we removed our custom lookup back to user for the manager field.

          If you have CRM customization or integration needs, reach out to us and let’s see how we can help.

          Topics: Microsoft Dynamics CRM Online

          Dynamics 365 Site Map Designer

          Previously we posted about the new Dynamics 365 App Module that was recently released with Dynamics 365.  Part of that module that we skipped over in the initial post is the Site Map Designer.

          The Site Map Designer is a visual way to update your sitemap for your app.  The Site Map Designer allows you to update the default site map (which was the site map we’ve known and loved over the years for past versions of CRM), as well as app specific site maps. 

          This means that now you could have more than one site map in your deployment depending on how many apps you have.  If you don’t have any apps, then you’ll have the single “Site Map” under Site Map components.  However, if you have at least one app, when you go to add a Site Map to your solution, you’ll see the default/base site map, as well as your app specific site maps.

          image_thumb19

           

          Launching the Site Map Designer

          To kick off the Site Map designer from your app, simply click the arrow pointing up to the right on the Site Map area of the app designer.  You can also kick it off by double clicking on the specific Site Map component in your solution, but depending on the XML in the Site Map, the designer may not be able to load it (see below).

          image_thumb77

          You’ll be presented with a blank canvas with a default Area and Subarea already placed on the canvas for you.  You simply need to rename these using the Titles and Descriptions area, as well as update the ID, Icon, Show Groups, and URL (more details below about each site map components properties that can be edited).

          image_thumb87

          In the Site Map designer, you can click the + icon in the top right corner to add a new component to your site map, or you can drag / drop the component from the right side over to the canvas to add it to your site map. 

          image_thumb[4]

          The table below shows the components that can be added onto the canvas, along with the properties per component that can be configured.

          Component Properties
          Area ID
          Icon
          Show Groups (flag)
          URL
          Titles
          Descriptions
          Group ID
          Set as Profile
          URL
          Titles
          Descriptions
          Sub Area Type (Dashboard, Entity, Web Resource, URL)
          ID
          Icon
          URL
          Parameter Passing
          Offline Availability
          Entity
          Default Dashboard
          Titles
          Descriptions
          Privileges (Entity, then All/Create/Read/Write/Delete/Append/AppendTo/Share/Assign)
          SKUs (All, OnPremise, SPLA, Live)
          Client (All, Outlook, Web, Outlook Laptop Client, Outlook Workstation Client)

           

          If you add an entity to the Site Map that’s not a part of your App artifacts yet, it’ll automatically get added to your App without any forms, views, or charts selected for filtering.

          Note that some of the Sub Area options become read only based on the type you select.  For example, if you don’t select Entity as the type, then the Entity dropdown that allows you to select the entity is read only as it only applies to that type of component.

           

          Troubleshooting

          If you wanted to, you can still export the app specific site map, and mess with the XML directly (if you’re courageous).  However, if you do so, be careful because some of the preexisting site map XML is not supported in the site map designer.  For example, I stole the “Settings” and “Training” areas of the main site map for my custom app specific site map, and had to comment out the following in my app specific site map because the designer wouldn’t load with it included.

          <!--SubArea Id="nav_plugintrace" ResourceId="Homepage_PluginTraceLog" Icon="/_imgs/area/Plugin_TraceLog_32.png" Entity="plugintracelog" Client="Web" IntroducedVersion="7.1.0.0">
            <Privilege Entity="plugintracelog" Privilege="Read" />
          </SubArea-->
                   
          <!--SubArea Id="nav_systemjobs" ResourceId="Homepage_SystemJobs" DescriptionResourceId="SystemJobs_SubArea_Description" ToolTipResourseId="SystemJobs_SubArea_ToolTip" Entity="asyncoperation" Url="/tools/business/home_asyncoperation.aspx" AvailableOffline="false" IntroducedVersion="7.0.0.0" /-->
                   
          <!--Privilege Privilege="LearningPath" /—>

          Until I commented those out, I would receive an error such as the following when I tried to go back into the Site Map designer.

          image_thumb92

          However, after I removed all the unsupported XML, I was then able to go into the Site Map designer and see all the Settings and Trainings components in my site map and I had the ability to tweak them using the new Site Map designer way, versus the old manual XML updates way.

          image_thumb96

          Topics: Microsoft Dynamics 365 Microsoft Dynamics CRM Microsoft Dynamics CRM Online