Tuesday, December 17, 2013
Dynamics CRM 2013 Spreadsheet Import Tricks
Dynamics CRM 2013 – Handle Bounced Emails
Monday, November 11, 2013
Microsoft Dynamics CRM 2013 - New Workflow Features
Synchronous Workflows
There are a bunch of great new features in CRM 2013. One particularly powerful one is synchronous workflows. It used to be that workflows could only run asynchronously, which made them an inappropriate choice for many automation scenarios. For example, if you needed to calculate a value that would be displayed to the user, workflows were a bad choice since they might take two seconds or 20 seconds, but either way, you were not going to see the results until the user refreshed the page sometime after the workflow completed.If we turn our attention to another new feature in 2013, the Process Flow, we notice that the Lookups do not allow us to set any “filtering” like we can on the form. For example, it’s typical to setup a filter between an Account field and a Contact field. That way, you only have to search through a list of Contacts related to the selected Account.
Let’s create a handy Contact Abbreviation field to demonstrate synchronous workflows and make it easier to find a particular contact in the Opportunity Process field.
We’ll be using the Manipulation Library written by Carlton Colter and available for download on CodePlex. This will add a number of useful String and calculation steps to your workflow Add Step menu:
Add a field to the Contact to hold the Abbreviation (optionally add it to the Form)
Now let’s use the Manipulation Library’s Substring step to calculate the Account abbreviation. Follow these Steps:
- Before we get into the fun stuff, let’s make sure our Workflow does get confused. Add a “short-circuit” to only run if we actually have an Account to work with (remember, Company Name is of type Customer which could also be a Contact!):
Interesting discovery – if you stop the workflow with status of Cancelled it will throw and error back to the user. - Now Click Add Step and find the “Strings Utilities” – you may need to scroll (note difference in spelling seems to be a bug in the library) and select Substring
- Give the step a good “variable sounding name” since we’ll be using this later in a formula. I called mine Account Abbreviation.
- Click Set Properties and then click in the Text value box. Then select Related Entities – Company Name (Account) in the right menu. Select Account Name and click Add. Lastly click OK.
Now that we have all of our abbreviations, we just need to update the Contact, so click Add Step and Update Record. Give the step a name (e.g. “Update Zip Finder”) and click Set Properties
Now we need to add the result of the three substring steps above into our Contact’s field. Unless you added the new field to the Contact form, you will need to scroll down and find it among the field “Additional Fields” section:
Now for the fiddly part. Select the Zip Finder field and then in the Look For, select Account Abbreviaion – Result and click the Add/OK like above. To add the other characters you will need to click in the Zip Finder field again, AFTER the highlighted slug and remove the extra whitespace. Now repeat the step for First and Last name. Your formula should look like this:
Now just click Activate and again in the confirmation dialog:
Let’s give this a try. Update a few contacts so you have some Zip Finders to test with. I added a contact named Johnathan Smith to Blue Yonder Airline. Hey, when I search for “blu” I don’t see anything! That’s because we need to add our new field to the entity’s Quick Find View. The super-fast way to edit the system views is to return to the Contacts list and click the ellipses in the ribbon (…) and System Views:
Just click the Add Find Columns in the right menu and select your new column. Make sure you click Publish on the Contact entity (or Publish All Customizations) to make the change effective.
Now when you type “Blu” you get a list of all contacts that have a “Blu” anywhere in their name, company, email, etc.
In many systems that will return too many records to find the one we want. But, if I type “blujs” (or even “bluj”) I’m searching for a very distinctive string and will work in other locations like Lookups!
Now this abbreviation scheme may not work in every situation, but the algorithm is very tweak-able for your particular application.
Synchronous Workflows vs. Plugins
There will definitely be debate about when to use a synchronous workflow over a plugin so here are some guidelines about when to choose real-time workflows:- Logic is relatively simple (if-then-else)
- The business rules may change frequently
- The data needed is contained in the primary entity or entities with N:1 relationships
- The process needs to create or send a template-based email
Thursday, October 10, 2013
Inspired by greatness
http://www.stevewiens.com/2013/09/20/rim-to-rim-what-i-learned-in-the-womb/
Thursday, September 19, 2013
Fix Virtual Box No Internet problem with Domain Controller
Thursday, April 11, 2013
Check you Plugin Stats!
Ever wonder how many times your plug-ins have executed and/or failed. Run an advanced find on PluginTypeStatistic and find out!
http://mpwiki.viacode.com/default.aspx?g=posts&t=105447
Alert Details
Message | Priority | Severity |
The Sandbox Host service has terminated a Sandbox Worker process. | Medium | Warning |
Rule Knowledgebase
Summary |
The Sandbox Host service has terminated a Sandbox Worker process. |
Causes |
A Worker process can be terminated for multiple reasons: 1. A plug-in used resources (CPU, memory, handles) excessively. 2. A Worker process was unresponsive to the Sandbox Host service. |
Resolutions |
No action is required unless there is a consistent failure. Using Advanced Find, review the PluginTypeStatistic for plug-ins registered in the system, which will provide information about plug-ins that have contributed to process terminations. |
External References |
This rule does not contain any external references. |
Creating ActivityParty for a custom Activity in Scribe
Scribe validates the activitytypecode that you supply against a list in the configuration file DynamicsCRMAdapter2011Metadata.xml. If you try to insert a new ActivityParty for a custom activity, Scribe will not allow it until you add your entityname and activitytype to the the configuration file. To fix this, close Scribe Workbench and edit the file XML file. Note: The entity name MUST match the logical entity name (e.g. new_mycustomactivity) or you will get a different error.