Server Side Synchronicity

Posted by on September 19, 2014 in   |  Microsoft Dynamics CRM,   |  Microsoft Dynamics CRM 2013,   |  Microsoft Dynamics CRM Online  |  commentsComments (0)

Today's guest blogger is Ross Talbot, a Development Principal at Sonoma Partners

If you have been following our adventures with Server Side Synchronization in Dynamics CRM 2013, we previously detailed some of the gotchas we had encountered with upgraded orgs and some added fixes with communication between Exchange web services and CRM. Recently we found another issue related to an upgraded org, this time revolving around permissions.

After we had resolved the previous issue with the web services on the servers having some issues sending data back and forth, we found that tests for the sync were working for all but 20 users when looking at the sync for Appointments and Tasks. Of course, this was now less than 10% of the users but not all so we went looking for more information. We started by checking the sync filters, trying to determine what set these 20 users apart from the others. The error we were seeing this time around was that the mailbox user doesn't have sufficient permissions on this mailbox. We checked impersonation settings, security roles, and client information to rule out differences. That is where we found the difference, and it pointed to the security roles associated to the affected users. The difference between the affected users and those that were working involved native security roles that had been assigned prior to the production environment going live during the initial user import. With no custom roles defined at that time, all users were given a native security role. Users with higher level security needs were given one of the custom roles and the native role was removed. So why were the users with more privileges having issues?

When creating custom security roles, a good habit or best practice is to make a copy of a native CRM security role and modify only the permissions you need to. That is the approach we take on Sonoma projects, to ensure you don’t have to change every single privilege as you might need to if you started from scratch. When you upgrade your CRM org, whether it is a product version update, a service pack, or a UR being applied, the native security roles are updated with security access to new entities and features. Not the custom roles though.

Here is a custom security role, highlighting a section of the Business Management tab in CRM 2011.

image

Now, here is a similar look at a role in CRM 2013

image 

There are now a few new entries, and in fact there is a new Privacy Related Privileges section just below these privileges. With all the new features in CRM, including Server Side Sync, Mobile Client Apps (MoCA), Business Process Flows, not to mention adding more with every release, it is becoming more and more important to review the privileges in your custom security roles when testing a new release and especially the features that come with it.

For the sake of future me and all the others that need to search for the privilege names related to these new to 2013 entries shown above, they are listed below.

Mailbox privileges: prvReadMailbox, prvShareMailbox, prvAssignMailbox, prvWriteMailbox, prvDeleteMailbox, prvCreateMailbox, prvAppendToMailbox, prvAppendMailbox

Email Server Profile privileges: prvWriteEmailServerProfile, prvAppendToEmailServerProfile, prvDeleteEmailServerProfile, prvCreateEmailServerProfile, prvReadEmailServerProfile, prvShareEmailServerProfile, prvAppendEmailServerProfile, prvAssignEmailServerProfile

Got your own issue involving server side synchronicity? Don’t rely on a message in a bottle. Contact us instead.

Dynamics CRM 2015 First Look: Enhanced Business Rules

Posted by on September 18, 2014 in   |  Microsoft Dynamics CRM,   |  Microsoft Dynamics CRM 2013,   |  Microsoft Dynamics CRM 2015,   |  Microsoft Dynamics CRM Online  |  commentsComments (0)

Microsoft has just announced a slew of new features that are coming out with their next version of Microsoft Dynamics CRM 2015 (previously code named Vega).  Check out the Dynamics CRM 2015 Release Preview Guide to see what features are coming with 2015.  Over the course of the next few weeks we’ll slowly reveal this functionality one by one and show some of the key highlights of these features.

Next up for our review is reviewing the changes and enhancements that Microsoft has made with Business Rules (new for CRM 2013).  The following high level enhancements have been made for this next major release of Dynamics CRM:

  • Business Rules can now be executed on the server (previously client side only)
    • Business Rule Scope should be set to Entity when building the rule
    • Ensures your rule will fire when no matter how records are updated and not only via the form
    • Synchronous and would be visible real time
  • Set default values on record creation (e.g., all your Leads are generated in the United States so you can default the country on the Lead record when records are created)
  • Added If.. Else If.. Else support
  • Ability to combine expressions using And/Or

Here’s an example where you can see:

  • The new option “Entity” in the top right corner for the Scope which would make this a server side business rule. 
  • An example of If/Then/Else support. 
  • How you can use “and” or “or” in conditions to make more complex conditions. 
  • The new “Set Default Value” action that’s been introduced.

image

With these enhancements, there are a set of limitations that everyone should be aware of:

  • Cannot support nested if.. else
  • No grouping of expressions in a condition
  • Expressions can be combined either using And, or using Or, but not both
  • Still single entity only (no ability to reach out to related records)

We’re excited to see the continued investment to make Dynamics CRM a more configurable application putting more power in the hands of System Administrators, and decreasing the requirement to hire application developers to extend the application.

Dynamics CRM 2015 First Look: Multi Entity Search

Posted by on September 17, 2014 in   |  Microsoft Dynamics CRM,   |  Microsoft Dynamics CRM 2013,   |  Microsoft Dynamics CRM 2015,   |  Microsoft Dynamics CRM Online  |  commentsComments (0)

Microsoft has just announced a slew of new features that are coming out with their next version of Microsoft Dynamics CRM 2015 (previously code named Vega).  Check out the Dynamics CRM 2015 Release Preview Guide to see what features are coming with 2015.  Over the course of the next few weeks we’ll slowly reveal this functionality one by one and show some of the key highlights of these features.

First up for our review is functionality that Microsoft added to their MoCA product when it was released which is multi-entity search.  This feature has been something our customers have been requesting for some time now and to bridge the gap in the previous product, Sonoma Partners built their own Universal Search solution that we make available on our community site for both 2011 and 2013.  If you look at the Sonoma Universal Search, you’ll see some similarities to the one now available in CRM 2015.

In order to setup multi entity search, navigate to Settings –> Administration –> System Settings.  In the General tab, you’ll see the section “Set up Quick Find”.

image

This section has two settings:

  • Enable Quick Find record limits:  This setting was introduced in CRM 2011 and it uses an organizational database setting to limit quick find search results to 10,000 records to improve performance.
  • Select entities for search:  If you click on the Select button, you’ll be presented the window below where you’re able to select up to 10 entities at a time to enable for multi-entity search.

image

Entities that are selected here will be used in the multi-entity search results and be displayed in the order that you see them in this list. 

Users will be able to use the multi-entity search using the magnifying glass in the global navigation bar.

image

Clicking on that magnifying glass will bring you to a page where you can enter any search criteria (no minimum number of characters needed meaning you can type in a single letter), and click search do see your results.

image

On this search results page, one could:

  • Filter the results to a particular entity using the “Filter with:” drop down on the top right.
  • Create a new record using the + icon next to the entity name
  • Navigate to the record by clicking on the tile

A few things to note about multi-entity search:

  • Uses quick find views to determine the fields to search across
  • Can search activities and notes as well
  • First 3 fields in the Quick Find View are what are displayed in the tiles that are displayed
  • Search from anywhere in CRM using the search icon on the global navigation bar
  • The search results are displayed in the Modern UI

There are currently a few limitations of multi-entity search:

  • Doesn’t work with USD
  • Maximum of 10 entities can be configured for search
  • No hit highlighting and MRU (most recently used) suggestions
  • Only action available on each search result is the ability to open the record

Even though there are a few limitations to multi-entity search, as we expected once the MoCA app was introduced with this functionality, it’s nice to see this much requested feature make its way into the web app. As it stands currently, this is a very powerful tool and key addition to Dynamics CRM.

Dupe Detection on Create/Update Returned to Dynamics CRM 2013…with a bug

Posted by on May 28, 2014 in   |  Microsoft Dynamics CRM,   |  Microsoft Dynamics CRM 2011,   |  Microsoft Dynamics CRM 2013,   |  Microsoft Dynamics CRM Online  |  commentsComments (1)

One of the biggest features removed when Microsoft Dynamics CRM 2013 was released was Duplicate Detection firing on creates/updates.  While duplicate detection remained via scheduling system jobs, the popular feature of seeing the pop-up appear on creates/updates was removed.

Needless to say the CRM community was in uproar, prompting some users and partners to create their own solutions to backfill the gap that was left by removing this 2011 feature such as this utility by Jason Lattimer.

With the Spring 2014 release that’s started to trickle out to CRM Online orgs, Microsoft has taken this community feedback and put duplicate detection on creates/updates back in.

image

However, be aware that while Microsoft has pleased many by making this functionality available once again, they didn’t quite get it right.  If you disable duplicate detection rules from running on creates/updates within the settings, the rules still fire and your users will still see the dialog when they create or update records that match a duplicate detection rule.

image

The only way to disable duplicate detection from firing on creates / updates is to uncheck the “Enable duplicate detection” checkbox which in turn disables it across the board (on data imports, from MS Outlook, and via scheduled system jobs).  Even if you uncheck “Enable duplicate detection” and recheck it (while leaving the creates/updates unchecked), after republishing your rules, the dialog will still fire on create and update. 

Note:  If you uncheck “Enable duplicate detection” and recheck it, you’ll have to republish your rules as disabling it system wide unpublishes all rules.

Hopefully Microsoft will release a patch soon for this slight oversight so that users can take full advantage of the duplicate detection feature as they did pre-CRM 2013.

Controlling Access to Access Team Templates

Posted by on May 23, 2014 in   |  Microsoft Dynamics CRM,   |  Microsoft Dynamics CRM 2013,   |  Microsoft Dynamics CRM Online  |  commentsComments (0)

One of the great new features of CRM 2013 is Access Teams.  Access Teams provides a great alternative over Sharing as Sharing should always be used as an exception and not the rule.  Too much sharing will lead to a large PrincipalObjectAccess (POA), which can lead to poor CRM performance.  This blog goes into details on recommendations to keep the POA table as small as possible.

For one of our customers we had a perfect scenario to use Access Team Templates.  The scenario is users should only have access to read their own records.  However, if they’re assigned a to-do that’s grouped together as part of a larger deliverable, they need to be able to see all details of that larger deliverable.  Therefore, adding them to the Access Team of the parent record with Read access, and allowing native CRM customizations to cascade that access down to the child records, the user is now able to see all data in this one grouping of work that they normally wouldn’t with normal security roles.

 

image

image

 

Access Teams are driven by the Access Team Templates (shown above, and available in Settings –> Administration –> Access Team Templates).

However, there’s something you should be aware of.  If the Access Team Template is ever deleted, all Access Teams that were created and use that template will be deleted from the system.  Therefore you need to provide tight security over who can create / update / delete Access Team Templates.

This is where the tricky part came in.  How do you drive permissions to Access Team Templates?  In native security roles there’s no “Access Team Template” or anything similar to that available in the list of entities or miscellaneous privileges.  So what drives this access?

Through painful trial and error, we identified the “not so obvious” Customizations entity (shown below) drives these permissions.  Therefore it’s recommended you remove Delete privileges to Customizations to prevent Access Team Templates from being deleted (for other obvious reasons as well).  Thankfully out of the box only the System Administrator and System Customizer roles have this privilege.

 

image

Big changes coming to the next major release of Dynamics CRM

Posted by on May 15, 2014 in   |  Microsoft Dynamics CRM,   |  Microsoft Dynamics CRM 2013,   |  Microsoft Dynamics CRM Online  |  commentsComments (0)

Yesterday Microsoft announced some big changes to the supported configurations for the next major release of CRM after the upcoming Service Pack 1 and Spring ‘14 release.  This time around Microsoft is being more aggressive than they have in the past when removing supported software. 

The biggest changes to support being the removal of the following CRM and SQL Server operating systems:

  • Windows Server 2008
  • Windows Server 2008 R2
  • Windows Small Business Server (All versions)
  • SQL Server 2008
  • SQL Server 2008 R2

As well as the removal of the following browser versions:

  • Internet Explorer 8
  • Internet Explorer 9

Some other notable changes are the removal of read-optimized forms and the 2007 SDK SOAP Endpoint that has been deprecated for awhile now.

It’s good to see Microsoft being more aggressive with future releases as they can focus more on providing the best product for the latest technology.  We also welcome the early communication as it gives customers a chance to prepare for the new changes.

If you have any questions or concerns about this announcement, head to our Contact Us page or post a comment below.  We would love to hear your thoughts.

Official announcement - http://blogs.msdn.com/b/crm/archive/2014/05/14/important-information-about-supported-configurations-in-the-next-major-release-for-crm.aspx

An interesting Activity Feeds quirk when customizing an entity’s ‘Follow’ views…

Posted by on May 12, 2014 in   |  Microsoft Dynamics CRM,   |  Microsoft Dynamics CRM 2013  |  commentsComments (0)

Today's guest blogger is Mike Dearing, a Senior Developer at Sonoma Partners

Do you use Activity Feeds / Yammer for your Dynamics 2013 organization?  If so, be advised that customizations to the ‘Follow’ views (‘<Entity Name> I follow’ and ‘<Entity Name> Being Followed’) don’t come over during a solution import. 

image

 

A colleague noticed this the other day when he had renamed the contact entity to a more industry-specific term for his client.  He then went through each view and changed the entity name there as well.  Unfortunately upon import of a solution containing this entity he noticed that the names for these 2 views in the target environment were still, ‘Contacts I Follow’ and ‘Contacts Being Followed’.  He ended up having to manually update the names of these views in the target environment to their correct names.

Intrigued by his plight, I spun up two online trial orgs and did some additional research.  It turns out that no changes actually come over on import for these ‘Follow’ views – including filtering, view columns, and sorting.  As such, this has the potential to be quite a bit more troublesome than what my colleague had run into, depending on how customized your client’s environment is.  Further testing showed that custom entities enabled for posting through Settings -> Post Configuration experience the same issue as well.  And since these views just look like any other view, their reluctance to being imported isn’t readily apparent. 

We’ve went ahead and logged a case on Connect for this, which you can view here.

CRM 2011 UR17 has been Released!

Posted by on May 9, 2014 in   |  Microsoft Dynamics CRM,   |  Microsoft Dynamics CRM 2011  |  commentsComments (0)

Microsoft just released UR17 for CRM 2011 and it comes packed with 60+ bug fixes.  The big news is that with UR17, Internet Explorer 11 on Windows 8.1 or Windows 7 is now supported in CRM 2011!

The following are some key bug fixes that stuck out for me:

  • After Update Rollup 12 or greater is applied to the Outlook client, the startup time for Outlook.exe can be significantly impacted if the configured organization contains many customizations
  • Recurring Series Expansion job does not complete if Recurring Appointment owner is a team.
  • N:N relationship records are not replicated offline
  • Cannot change owner on create of Appointment after Update Rollup 16
  • When you have an HTML web resource on a form, the web resource is removed when clicking the backspace button in Internet Explorer

And for devs, there was a fix to the OrganizationServiceContext as well

  • SDK OrganizationServiceContext fails to update a related record while in a create transaction.

Head to the following link for the full list of bug fixes - http://support.microsoft.com/kb/2915687/en-us.

And here for the actual download - http://www.microsoft.com/en-us/download/details.aspx?id=42672.

As always, the best practice is to backup your organization and be sure to install the UR in a development environment first to test all of your current functionality and make sure there are not any issues with it before installing to production.

CRM 2013 - Phone Call fields won’t default from Sub-Grid

Posted by on May 8, 2014 in   |  Microsoft Dynamics CRM,   |  Microsoft Dynamics CRM 2011,   |  Microsoft Dynamics CRM 2013  |  commentsComments (2)

We recently ran into the following issue with native defaulting of fields on the New Phone Call form from an Activities sub-grid in CRM 2013. The functionality exists in CRM 2011 and exists in CRM 2013 if you create a New Phone Call from a related Activities grid.

For example, you can go to a Contact record and view the related Activities through the Associated Grid as shown below.

image

Then if you click to add a new Phone Call, a new Phone Call record displays with the Call To and the Phone Number field automatically populated.

clip_image001

This is a great time saver and allows you to quickly create a Phone Call record. The issue is if you use a sub-grid for Activities (rather than needing to navigate to the related grid) then the Call To and Phone Number won’t auto-populate as it does from the related grid or how CRM 2011 used to default it.

For example, I have an Activities sub-grid on my Contact form which allows me to easily create a new Phone Call directly from the sub-grid.

image

This pops open a new Phone Call record but without Call To and Phone Number populated.

image

Microsoft was made aware and a Connect item has been created here. Any upvotes will help bring this functionality sooner rather than later!

Is your CRM 2013 Activities Tab disabled? It might be your fault!

Posted by on May 6, 2014 in   |  Microsoft Dynamics CRM,   |  Microsoft Dynamics CRM 2013  |  commentsComments (0)

Today’s guest blogger is Ian Moore, an Associate Developer at Sonoma Partners.

In CRM 2013 one of the new interface enhancements is the Activities Tab, which contains related Activities and Notes for the record you are currently viewing. You can also add new Phone Calls and Tasks and see them appear in the feed instantly. Seeing as this is out of the box functionality in CRM 2013, it might surprise you when a user says these activity forms are disabled and they can’t use them! When trying to add a new activity through this control, all the fields were locked. How could this happen?

clip_image002

As it turns out, some custom Javascript code on this entity form was having some unintended effects on the Activities Tab. Occasionally there are scenarios where a CRM form should be disabled and can’t be handled by security roles and read-only forms alone. In this particular case, the Account form needed to be disabled based on a combination of security role and an option set used to track the type of account.

To accomplish this, we used the controls collection available through the SDK to disable all controls individually:

// After validating our business logic...
Xrm.Page.ui.controls.forEach(function (control, index) {
    var controlType = control.getControlType();
    if (controlType != 'iframe' && controlType != 'webresource' && controlType != 'subgrid') {
        control.setDisabled(true);
    }
});
 

Once this executes, any control on the form that’s not an iframe or subgrid is going to get disabled and show the lovely grey lock icon. Could the Activity Pane fields really be a part of this collection? Using the same forEach method above and logging the names of each control to the Javascript console, you will see the following names in addition to all your regular attributes:

clip_image004

The type codes for Phone Call and Task in the control’s name are a dead give away to identify the controls we’re trying to avoid. Therefore a quick solution to our problem is to simply check that “quickCreateActivity” is not in the control’s name, like so:

Xrm.Page.ui.controls.forEach(function (control, index) {
    var controlType = control.getControlType();
    if (controlType != 'iframe' && controlType != 'webresource' && controlType != 'subgrid'
        && control.getName().indexOf('quickCreateActivity') == -1) {
        control.setDisabled(true);
    }
});
 

Now your entity form will still be disabled like you expect, but users will still be able to create Phonecalls and Tasks through the Social Pane/Activities Tab like they expect.

One additional thing to note is that while these activity “quick create” fields are in the Xrm.Page.ui.controls collection, this collection does not include the quick create forms that are opened from the command bar – which might be why this Activity Pane behavior was so unexpected in the first place!


Contact Us for a Quote, or Personalized Demonstrationof Salesforce.com or Microsoft Dynamics CRM for Your Business.

Contact Us