Tip #227: View desktop version of CRM in IOS 8

Dynamics CRM hides some links when the application is opened in a mobile browser, like IOS Safari. This includes admin functions that are not designed for mobile browsers, like run report, Advanced Find, and the Settings area.

If you still would like to have these buttons appear on your tablet, third party browsers like Google Chrome have traditionally offered the ability to make the browser request the desktop version of the website, and with CRM, the missing links will then appear.

IOS 8 also ads this feature to mobile Safari:
1. Tap the URL bar to reveal the favorites/recently viewed records pane.
2. Pull the pane down.
3. Select “Request Desktop Site.”


IMG_0085-0.PNGYou will now see the full website. Note that this doesn’t mean that the buttons will all work. Some, like Advanced Find, will not work correctly. Others, like running reports, publishing workflows, or adding security roles to users, can be done from a tablet browser when desktop version is requested.

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)
Tweet about this on TwitterShare on FacebookShare on Google+

Tip #226: It’s a privilege

If you wish to have a link in the Dynamics CRM sitemap menu only appear for certain people, this can be accomplished by adding the privilege tag to the subarea in the sitemap XML. This allows you to specify that users must have the permission specified to see the link. For example, in the standard Activity Feed personal wall link in CRM 2013, users must have read permission for the Post entity to see the “What’s New” link.


If you don’t like performing XML surgery, an easier way to do it is with the sitemap editor in the XRM Toolbox. By right clicking on a sitemap link, you can select “Add Privilege,” then specify the entity and the permission required.



Add Privilege

So what if you want to hide an entire area for a group of users? If all links in an area are hidden for a user, the entire area will go away. So, for example, say you want to hide the Settings area for users who are not System Administrators? In that case, you could add a privilege tag to all of the subareas in the settings area and specify read permission for the Solution entity. Any user who is does not have read permission for the Solution entity will not see the Settings area button.

But what if you want to show it to a specific group and hide from all of the rest of the groups, and there is no specific permission that group has that is not shared by the other groups? For example, say that you add an “Inside Sales” sitemap area to group links needed by the inside sales group. This includes links that other groups have access to, but you want to hide this area from other groups to simplify their user experience.

In this example, you could create a new custom entity called “Inside sales view.” Do not add the custom entity to the sitemap, but only give read permission to the entity to the inside sales group. Then add a privilege tag to each of the subareas in the “Inside Sales” sitemap area based on read permission for the “Inside Sales View” entity.

The result will be that only the inside sales group (and system administrators) will see the new sitemap area.

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)
Tweet about this on TwitterShare on FacebookShare on Google+

Tip #225: When CRM makes ye say “Arrrrrrgh!”

Friday, September 19
International Talk Like a Pirate Day 2014

If ye be usin’ Dynamics C Arrrrrrrrrrrr M fer several years, ye may spy wit’ ye eye that CRM starts runnin’ like a scallywag. Here be several thin’s ye can do to swab th’ deck ‘o ye CRM system, hoist performance, ‘n spit shine th’ cobwebs out ‘o th’ cornerrrs. Trrrrranslate, arrrrrrgh! Trrrrranslate, arrrrrrgh!

If you have been using Dynamics CRM for years, you may have noticed that the system has started to run a bit slower. Here are a few things that you can do to clean up your CRM system, improve performance, and cut some of the clutter that may have started to build up.

  1. Careen asynchronous table, ‘n if ye don’t already, schedule bulk scuttle jobs t’ do it magically. Trrrrranslate, arrrrrrgh!

    Clean up asynchronous table, and if you don’t already, schedule bulk delete jobs to do it automatically

  2. Hoist th’ newest update rollup. Trrrrranslate, arrrrrrgh!

    Deploy latest update rollup

  3. Swab th’ POA table. Use Buccaneer Sewell’€™s secret decoder rin’. Trrrrranslate, arrrrrrgh!

    Clean up the POA table. Use Scott Sewell’s secret decoder ring.

  4. Make sure ya ‘ave a good stash strategy. Trrrrranslate, arrrrrrgh!

    Review backup strategy.

  5. Refresh dev/QA orgs. Make th’ existin’ orgs walk the plank, import updated copy o’ production MSCRM database. Trrrrranslate, arrrrrrgh!

    Refresh dev/QA orgs. Drop the existing organizations, import updated copy of production MSCRM organization.

  6. Use th’ CRM data detective t’ review how frequently fields be populated. Delete/hide unused fields ‘n entities. All mateys have those “’twas a good ideas but avast, didn’t pan out”€ type entities in their crew. If ye ‘ave any o’ these or any fields that were added ‘n then nah used, scuttlin’ these can ‘ave a big bounty. Trrrrranslate, arrrrrrgh!

    Use the CRM data detective to review how frequently fields are populated. Delete/hide unused fields and entities. Everybody has those “good ideas that didn’t pan out” type entities. If you have any of these or any fields that were added and then not used, deleting these can have a big benefit.

  7. Look at rigs to stop plundering. If ye ‘ave added entities o’er time, chances are that th’ roles don’t reflect yer original security strategy. Maybe good time t’ switch t’ a base security role stratarrrrgy. Trrrrranslate, arrrrrrgh!

    Review security roles. If you have added entities over time, chances are that the roles don’t reflect your original security strategy. Maybe good time to switch to a base security role strategy.

  8. Review audit settin’s/duplicate detection settin’s to verify they be set correctly. These thin’s get turned off when solutions be imported. Chances be that some ‘o them be disabled. Trrrrranslate, arrrrrrgh!

    Review audit settings/duplicate detection settings to verify they are set correctly. These things get turned off when solutions are imported. Chances are that some of them are disabled.

  9. Review searchable field settin’s usin’ th’ xrm toolbox. Set fields not used on forms (other than system required fields) to be non searchable ‘n simplify Advanced Find. Trrrrranslate, arrrrrrgh!

    Review searchable field settings using the xrm toolbox. Set fields not used or on forms (other than system required fields) to be non searchable and simplify Advanced Find.

  10. Pillage any junk views ‘n reports. I define “junk” as views ‘n reports that be not actively used by anyone. Trrrrranslate, arrrrrrgh!

    Remove any junk views and reports. I define “junk” as views and reports that are not actively used by anyone.

  11. Organize ye olde trreasurremap. Frequently a crew that be in place fer several years gets a lot ‘o junk in th’ sitemap, like a settin’s area wit’ 75 links. I like to cut out anythin’ that does not have to be in th’ settin’s area. Fer thin’s like lookup entities fer country that never change, I like to remove from settin’s area fer simplification. If someone needs to modify ’tis list, they can do it via advanced find. Trrrrranslate, arrrrrrgh!

    Organize your sitemap. Frequently a deployment that has been in place for several years gets a lot of junk in the sitemap, like a settings area with 75 links. I like to cut out anything that does not have to be in the settings area. For things like lookup entities for country that never change, I like to remove from settings area for simplification. If someone needs to modify this list, they can do it via advanced find.

  12. Remove any third parrrty add-ons that be no longer used. Again, that fax integration was a jolly idea at th’ the hour, but do we really still need it? Trrrrranslate, arrrrrrgh!

    Remove any third party add-ons that are no longer used. Again, that fax integration was a good idea at the time, but do we really still need it?

  13. Upgrade to CRM 2013 SP1. Or if ye are not prepared to release the kraken, at least upgrade components like SQL Serrrrver ‘n Internet Pirate to newer versions to make yon future upgrades easier. Trrrrranslate, arrrrrrgh!

    Upgrade to CRM 2013 SP1. Or if you aren’t ready to upgrade, at least upgrade components like SQL Server, Internet Explorer to newer versions to make future upgrades easier.

VN:F [1.9.22_1171]
Rating: 5.0/5 (2 votes cast)
Tweet about this on TwitterShare on FacebookShare on Google+

Tip #224: Email signatures

In Tuesday’s tip, George Doubinski threw me under the bus gave a great alternative use for translation files in Dynamics CRM. The eight year old boy that I pay to write tips for me thought that this was a great tip, and made me think of some other alternative uses for Dynamics CRM features. By “alternate use” I mean a use for a feature that is not its primary purpose.

Here is another of my favorite alternate uses.

Sometimes I send an email from the Dynamics CRM web client. If I’m on a contact record, it can be quicker to just send the email from within the Dynamics CRM web client. However, when I do this, my email signature from Outlook doesn’t appear on the email. There is no “insert signature” button. But you still can use email signatures from the web client. Just use an email template for your signature.

  1. Create a new email template. Add you relevant contact information. If desired, you can also paste in a photo of your face.signature 1
  2. When you write your email in the web client, after you compose your email, click the “insert template” button. signature 2
  3. Select the template for your email signature. CRM will ask you if you want to replace the email subject with the template subject. Click “Cancel.” signature 3
  4. Your email will now include your signature.

signature 4





VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)
Tweet about this on TwitterShare on FacebookShare on Google+

Tip #223: Firefox and a message box

Browsers are on a war path. First, in case you were wondering why editing emails in workflows no longer work, that’s because Chrome disabled showModalDialog, breaking bucketloads of CRM functionality relying on that. See this good summary for a comprehensive feature list and a temporary workaround.

Firefox has been much sneakier than that. It kind of works but every now and then drops the checkbox on unsuspecting user, that is way too easy to accidentally click, press OK and render your CRM useless until the browser restart.
Prevent this page from creating additional dialogs
To stop Firefox from ever sneaking this option in:

  1. Open new tab, type about:config in address bar and press Enter
  2. Ignore irreverent message about voiding your warranty since there is none to start with
  3. Copy and paste (or type) this into Search box: dom.successive_dialog_time_limit
  4. If found, right mouse click > Modify
  5. If not found, right mouse click > New > Integer > name is dom.successive_dialog_time_limit
  6. Value is magic 0
VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)
Tweet about this on TwitterShare on FacebookShare on Google+

Tip #222: Mixed signals

I am very honored to have Joel as my fellow CRM tipster. Most of the time, that is. Sometimes I find myself closely studying the state of my own footware thinking if I should ever be seen in one room with that person. Take, for example, this post.

Update each message for the entity, replacing the old name with the new entity name.

I suspect that from time to time Joel employs an eight-years old to write his posts (I have no other explanation for his insane productivity). “Update EACH message”?!

To stop Joel from publishing another tip on how to modify EACH label as well, let me show how professionals do that.

  1. Open the solution your entity is a part of. No, not the default one. You do use solutions in your daily development, don’t you? If you don’t have one, create one and add the entity to it.
    Export Translations
  2. Click that magic Export Translations button
  3. Extract CrmTranslations.xml file from downloaded zip archive
  4. Open it with Excel
  5. Use magic functionality called Search & Replace to turn Accounts into Companies. You may need couple passes to deal with all the forms and capitalization. Use common sense: case-sensitive search, plural first, etc. Deal with Display Strings and Localized Labels at the same time.
  6. Save, re-pack, click Import Translations, upload updated zip file, publish.

Like a boss memeDone.

VN:F [1.9.22_1171]
Rating: 4.0/5 (1 vote cast)
Tweet about this on TwitterShare on FacebookShare on Google+

Tip #221: Lobachevskian geometry

When things get out of control in a parallel universe, people notice and intervene. As turned out to be the case. One comment from Chad Rexin was so good that it deserved its own post. Welcome to the twisted SQL world where, like in Lobachevskian geometry, there is more than one degree of parallelism.

Another way to get good performance is to leave the Max Degree of Parallelism at 0 or set to a max of 4 if you have 4 or more CPUs/Cores, but also simultaneously setting the ‘Cost Threshold of Parallelism’ = 60 up from the default of 5, which is a reflection of what SQL estimates the query time in seconds will be and at which point it will generate a parallel plan. This way you can let SQL Server run with a maximum of 1 CPU in query plans for all but the more expensive query plans. This way SQL will only generate a query plan allowing for multiple CPUs if it thinks the query will take longer than 60 seconds and giving you the best of both worlds in case you have some Reporting databases or Analysis service databases that happen to be on the same SQL Server as the CRM databases so that both can run optimally. Even with servers that have many more than 4 cores, you may not see much of an advantage or may even see a drop in performance setting the max degree of parallelism higher than 4 from what I have seen in very busy Microsoft CRM environments where there is 1000 or more active users and/or active integrations going on.

Ultimately, you may need to run with a constant work load and test to determine which setting is optimal. Below is the T-SQL statements to make this change.

sp_configure ‘max degree of parallelism’,4
Reconfigure with Override;
sp_configure ‘cost threshold for parallelism’,60
Reconfigure with Override;
VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)
Tweet about this on TwitterShare on FacebookShare on Google+

Tip #220: Mixed messages

You are implementing Dynamics CRM, and you don’t like the entity name “Accounts.” Maybe you work for a bank, where account has a specific meaning in your organization. So you rename the entity to “Company.” That was easy.

Not so fast. Just changing the name of the entity to “Company” will change the name of the entity links in the application, but it will not update the text included in error messages, buttons, and tool tips. For example, when you hover over the “Deactivate” button on the command bar, the tool tip says “Deactivate these accounts.”

deactivate account

This will cause user confusion. If the entity is called “Company,” the message about accounts will not make sense. A user may think that since it says ‘deactivate these accounts,” pushing the button will deactivate the financial accounts associated with the company, while in reality it will deactivate the company record.

That is why, when renaming an entity, it is very important to update the message text. In customization for the entity, click on “Messages.”


Update each message for the entity, replacing the old name with the new entity name.

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)
Tweet about this on TwitterShare on FacebookShare on Google+

Tip #219: You want the top one

One of the challenges of creating reports is the lack of real data in development environment. There is not enough Nancies Davolios to simulate real volumes. For that reason alone production organization is often replicated “back” to test and development environments. Reports suddenly come to life and designers can see 7-figures opportunities and otherwise empty categories.
There is a price to pay, however. If you ever designed report with explicit pre-filtering then at some point you have a data source with dynamic SQL that looks like this:

SET @SQL = 'SELECT Name, DueDate, TotalAmount
FROM ('+@CRM_FilteredInvoice+') AS FA 
where ShipTo_StateOrProvince = ''FL''


SELECT Name, DueDate, TotalAmount
FROM ('+@CRM_FilteredInvoice+') as CA 
where ShipTo_StateOrProvince  = ''CA'' '


All is well until you press OK button at which point you are presented with this:
Parameter prompt

It’s understandable, report designer is very determined to parse the statement to figure out the columns. There is a temptation to type select * from filteredinvoice and be done. If you are developing in a replica of production environment, chances are that will be your opportunity to have a very long lunch. There is not much fun watching parser trying to digest 2 million records for the sake of figuring data type of TotalAmount.

The solution? Use top 1 clause to limit resultset to one record only as parser does not need any more than that:
One invoice only

VN:F [1.9.22_1171]
Rating: 1.0/5 (1 vote cast)
Tweet about this on TwitterShare on FacebookShare on Google+

Tip #218: Sales Literature vs. SharePoint

So you have implemented Dynamics CRM with SharePoint document integration. The mindset of many companies with SharePoint is that SharePoint is where all documents should live, and that is a good idea, as SharePoint provides document collaboration features not found in CRM.

However, Microsoft Dynamics CRM includes Sales Literature functionality. The value of sales literature is that it makes product brochures available to sales reps from where they work—sending emails in Outlook. It also allows related documents to be grouped together, so if a product has 5 documents that have to be sent when someone emails a customer with a quote for that product, sales literature can be a big time saver. I refer to sales literature as “email attachment templates” because it pre-groups related attachments that are frequently sent and makes life much easier. By inserting one sales literature record into an email, the sales rep gets all of the related attachments that are part of the sales literature record. It is much more accurate than sales reps sending a copy of the literature from their hard drive that may be outdated or incorrect. Documents only stored in SharePoint are not going to be as easily accessible to salespeople as they send emails to clients, nor are they going to be connected to products and campaigns like they are with Sales Literature.

It doesn’t have to be either/or. Many companies use SharePoint for marketing to collaborate on the documents as they design them and store the master copies in SP, but also use sales literature to group and expose these documents to sales.

It can be a win-win—marketing collaborating on the document in SharePoint, exposing it to sales via sales literature, and sales representatives saving time when sending product brochures and other marketing collateral to customers..

VN:F [1.9.22_1171]
Rating: 3.8/5 (4 votes cast)
Tweet about this on TwitterShare on FacebookShare on Google+