Tip #129: Migrating to the cloud

When you move from CRM On Premises to CRM Online, you have to migrate your data. This can be done easily using a tool like Scribe Insight, SSIS with Kingswaysoft, or the Dynamics Connector. The following tips will make your life easier when making the move.

  1. Add a custom field to the 2013 user record to hold the old user id to simplify translation of record owners.
  2. When you import records, map the CRM record GUIDs to the new record IDs, so you don’t have to transform to populate lookups
  3. Bring in all records before setting statecode/status code. You can’t add relationships to closed records, so wait until all records are imported, then do another pass and update the closed records
  4. Some things need to be updated post closing of the records. Activity and case “actual” fields, for example.
  5. If multiple currencies are involved, set the exchange rates on currencies in CRM Online before you import the records.
  6. Temporarily create CRM Online users for disabled users in CRM on premise so you can maintain legacy record ownership.
  7. Be aware that modified on, modified by, and created by cannot be overwritten. Create a dedicated migration/integration user for the migration to run as.

Tip #128: Are you confusing your users?

Don’t leave your end users scratching their heads due to the number of unused fields listed in Advanced Find.  Ensure you set the Searchable characteristic of all “unused” attributes to No.  Unused attributes are those fields that do not show up in Views or on Forms.  From an end user perspective, they are not used since the end user does not see them when using the application.  Ensuring the Searchable property of the Attribute is set to the applicable value will go a long way to improve the End User experience.

Tipped to the jar by

Tipp Jarr’s Double Dip

Note, there are a couple of core system fields that you do not want to make non searchable. Making the transaction currency field or the primary attribute ID field non searchable will break Advanced Find and make some views unusable.

Also, if you want a quick way to bulk update the searchable property of attributes, use the XRM Toolbox, or, for the attributes that are on the same page, simply select them all, click Edit button and enjoy bulk-edit:

Bulk editing fields properties

Tip #127: Test CRM for Tablets from a PC browser

So you want to test CRM for tablets, but don’t have a tablet? No problem.

You can open the CRM for Tablets user interface in a web browser. This is handy for testing how your configuration will look in CRM for tablets. The following works with Chrome browser.

First, log in to CRM using the desired user credentials. Then, in another tab enter the following:

https://orgname.crm.dynamics.com/nga/main.htm?org=orgname&server=https://orgname.crm.dynamics.com

Replace “orgname” with your CRM organization name. You may get a warning that it cannot be accessed via a web browser, but after clicking “ok,” it should work.

Tip #126: Removing an entity from “Quick Create”

One of the new features of Microsoft Dynamics CRM 2013 is the ability to use Quick Create:

Quick_Create_1

The Quick Create menu contains multiple entities out of the box but you can remove an entity the organization is not using by following these 3 simple steps – we will remove the “Competitor” entity in this example:

1. Navigate to the Settings -> Customization -> Customize the System

2. Click on the entity you would like to remove from the Quick Create bar

3. Deselect “Allow quick create” on the Data Services section of the entity. Save and Publish All Customizations.

quick_create_2

Refresh your page and notice how  “Competitor” is no longer an option:

quick_create_3

Enjoy!

Tip #125: The wait is over

This week has all been about workflows and waiting. To finish it off, we’d like to present a short video demonstrating how to schedule a long running process (sending anniversary gifts to contacts in this case) without creating a bunch of forever waiting workflows. It’s done by using wonderful solution by Lucas Alexander.

YouTube player

We also added two new tags that over time, hopefully, will grow into new streams of thoughts.

nocode — throwing plug-in at a problem is not always the best solution; it probably will get the job done but the cost will be high and flexibility will suffer. That does not mean that coding is bad, reuse of good code is perfectly acceptable.

shoestring — not everything needs to cost an arm a a leg. It is possible to create flexible and inexpensive solutions by being smart, by reusing code and third-party solutions, both free and reasonably priced ones. Save your energy for what really matters.

Tip #124: But wait, there is more

Despite of what we said earlier this week, wait can be a very powerful instrument.

My fellow tipster Joel suggested in his last tip some fine tuning when it comes to wait:

Combine waits and check condition. So you have a process that emails a customer service representative three days after the case is open. No need to email them if the case has been closed, right? After the wait, have the workflow check conditions to verify that the condition that triggered the workflow is still true.

Another way to accomplish the challenge above is to wait instead of check. Unlike human beings, Dynamics CRM workflow can indeed multitask and parallel wait is one of the most powerful and most underused features of the workflow.

Parallel wait in action

The visual representation does not do justice to what’s going to happen. System is going to wait for either case to be closed or for 3 days, whichever happens earlier.

The key to this sorcery is the step called Parallel Wait Branch which becomes available if you select any wait condition in the workflow
Parallel wait menu is available

Tip #123: Waiting for Godo in CRM workflows

This week’s tips all seem to be about workflows and here is an old favorite of mine. I always found it interesting how non-intuitive wording around Timeout condition pushed majority of developers to use rather convoluted but easier to read and understand Wait conditions when a workflow needs to be paused for a fixed duration.

For example, if workflow needs to be paused for 1 day, a large number of CRM developers would create something involving process execution time:

Wait 1 day condition

Stop it.

Timeout property of the process allows for one extra condition called Duration
Duration condition

and, when selected, condition becomes easy to read and understand without doing any mental gymnastics:
Wait 1 day with timeout

Tip #122: If you must use waiting workflows

In yesterday’s tip we suggested to avoid wait conditions altogether; but if you must use them:

Tip #121: Don’t use wait conditions

Workflow wait conditions can be very useful. Say you need to have an email go to a customer 30 days prior to their contract renewal, it can be tempting to use a wait condition. However, excessive use of wait conditions has a downside.

  • Performance: each waiting workflow instance carries performance overhead. The more waiting workflow instances that you have, the more server resources will be consumed by the Asynchronous Processing Service.
  • If you change the logic in your workflow and republish (like update the text of the email sent to your client), it does not change waiting workflow instances. For example, if you change the renewal email frequency to 15 days rather than 30 days, any workflow instances that are waiting will not be updated. (See tip # 24 for a potential way to minimize this risk).

As an alternative to wait conditions, use a scheduled batch process using Scribe or SSIS with Kingswaysoft to fill the role of the wait condition. This can be scheduled to run in batch with no impact to performance of the Asynchronous Processing Service.

 

 

Tip #120: Use the filtered views

When you are writing reports for Microsoft Dynamics CRM, a common temptation is to use the base tables or non filtered views. it can be tempting to do this to make your report run faster. Before going this route, please consider what you are giving up:

  1. You have to grant the CRM service account a higher level of database access, which is not supported.
  2. You create a security back door–any report written against the base tables and views will not be constrained by CRM security. Users will have access to records outside of their normal record access levels.
  3. You give up the ability to use prefiltering.
  4. The report will not reflect user time zone or language settings.
  5. An upgrade may break your reports–just ask CRM 2011 users who had reports reading from the extension base tables.

Before opening up the barn door, please be sure you have exhausted all other optimization options:

  • Eliminate unnecessary joins
  • Use prefiltering, and set the filter to the desired data subset.
  • Move your query to a stored procedure*
  • Create a custom view*

* These options will require modification of database permissions to grant the CRM service account permission for the stored procedure or view; however, they are safer options than granting all users read access over all base tables or views.