With the release of CRM Online Spring 2015 Update, Microsoft delivered the ability to define alternate keys for an entity. Alternate keys can be one or many attributes that are a unique combination of columns to uniquely identify a record instead of using the typical primary key. Alternate keys can be made up from a combination of decimal, integer or string attributes.
Lets dig into how the new alternate keys can work in CRM based on a real-world scenario.
In my example we have an entity for States and our Contact entity has a Lookup to the State entity. The State entity has an attribute called Code where it will store the unique two character abbreviation for the State such as IL for Illinois. There is an integration with another system where Contacts will be passed to Dynamics along with the two character abbreviation for State. Alternate keys work perfectly in this scenario as we can just associate the State record to the Contact record by using the State’s Code instead of needing to query to find it’s GUID.
In order to accomplish this, we first need to go to the customizations for the State entity. Underneath the entity is a new link for Keys.
Click New which will open a dialog and let you pick one or more keys that will make up a unique combination to identify a record. We will select Code as a Key for our State entity.
Now with the SDK when updating a Contact record, in order the set a Lookup value we would need to use the EntityReference object and provide a GUID to a State record but with the latest Spring Update and the latest SDK, we can instead pass in a value for the Code attribute like shown in the snippet below.
Therefore if our integration sends us a Code for the Contact’s State such as “IL”, we can just update our Contact record using the “IL” value and avoid needing to do a query against the State entity to find the GUID for the IL State record.
One last thing to point out about alternate keys is that CRM will put a constraint on the entity to make sure the new alternate keys make up a unique identifier for the entity. If you try creating a record with a duplicate set of alternate keys, you will see an error similar to the one shown below.
Today's guest blogger is Rachel Sullivan, a Senior Consultant at Sonoma Partners
CRM allows you to easily update fields on records using their bulk edit functionality. Records that you can query and return back in a list/grid can all be edited using this functionality.
However, since it’s currently not a field on the Opportunity form, there is no way to update the Business Process stage using this native bulk edit feature. However, fear not, as Sonoma is here to provide a workaround on how to edit this field using native export/import.
In order to update the Business Process Stage using this workaround, follow these steps below.
1. You’ll first need to find the unique identifier of each process stage (the GUID). To accomplish this, use Advanced Find to identify the opportunities that you would like to update.
3. Edit the columns and include Process Stage
4. Click Results and from this view, you can see all of the unique Process Stages and their GUIDS
You will need to match each unique GUID with the Process Stage Name. The easiest way to do this is to open a record of each unique Process Stage value, view the Process Stage name. Do this for each unique Process Stage.
- d3ca8878-8d7b-47b9-852d-fcd838790cfd = Propose
- 650e06b4-789b-46c1-822b-0da76bedb1ed = Develop
5. Once all GUIDS are gathered, you’ll need to export the records that you’d like to update. When doing this, make sure to check the box that makes the file available for re-import (note that with CRM 2015 Online Update 1, all records are automatically exported for reimport and this step isn’t necessary. This should come to CRM 2015 On Prem in the fall). Save the file locally and open it with Excel.
6. Once in Excel, copy and paste the GUID of the business process stage (that you’d like to change each record to) into the Process Stage column. Save the file and import back into CRM.
The Sonoma Partners Relationship Mapper for Microsoft Dynamics CRM allows you to see who knows who and how. It's an easy, drop-in solution that you can just add into your Dynamics CRM instance to visually see which relationships exist in your system.
Contact us learn more about Relationship Mapper for Dynamics CRM.
Note: The following is a guest post from Parature, from Microsoft Sr. Product Marketing Manager Tricia Morris. Tricia promotes Parature's focus on customer service thought leadership and best practices through Parature's customer service blog.
Customers’ expectations for brands and organizations delivering the right answer at the right time, whether through assisted or self-service, continue to grow. In the The Real Self-Service Economy Report, 70% of consumers surveyed now expect a company website to include a self-service application.
In the most recent American Express Customer Service Barometer, 99% of consumers say that getting a satisfactory answer or being connected to someone knowledgeable are important prerequisites to a great customer service experience. But while customers are expecting more, many brands and organizations are struggling with providing the knowledge agents and employees need to consistently deliver the right answers at the right time across all major service and engagement channels.
Empowering Employees, Engaging Customers with
Parature Knowledge within Microsoft Dynamics CRM
Knowledge and knowledge management serve as the basis for productive, proactive and consistent assisted and self-service customer care. When both employees and customers can find the right answers at the right time, delivered on the channel of their choice or convenience, satisfaction is sure to rise.
Knowledge on every desktop is the foundation for Parature and Microsoft Dynamics CRM’s powerful and growing integration success story. Teamed with Microsoft Dynamics CRM’s case management, this easy access to and delivery of knowledge empowers employees and engages customers for greater service success. Click here to download the feature sheet or contact Sonoma Partners to make this powerful integration work for your brand or organization.
Today’s post is courtesy of Ross Talbot, a Development Principal at Sonoma Partners.
In our continuing coverage of new features included in the CRM Online Spring 2015 Update, today we will be talking about optimistic concurrency.
First, a little review of data quality and minimizing data loss. Just as in life, there are two basic models for minimizing loss when updating data in your database: optimistic concurrency and pessimistic concurrency. Pessimistic concurrency uses row locks to prevent others from making changes while you are performing an update. This prevents a conflict by calling “dibs” and then releasing the lock when you are done. Optimistic concurrency involves an attempt to update and then a rollback if there is a conflict. This prevents a conflict by stopping the second update and letting the user know via an error message. Optimistic data tries first before stopping, and pessimistic data fights others off until its update is complete.
What does this mean for Dynamics CRM today? The lifeblood of your business starts with your customers, so from a CRM system perspective your customer data is vital. With integrations, mobile applications, and multiple users accessing and updating this data, you want to be sure that a situation that could potentially result in data loss is handled in a way that minimizes that potential issue. So let’s dive into an example of how these updates can be used in your code.
Before we start, optimistic concurrency is supported with this update on all out of the box entities enabled for offline sync as well as all custom entities. This is found as a metadata setting “IsOptimisticConcurrencyEnabled” and is set to true if the entity supports it. I have also set up a console app with some basic logging and an organization service to create a contact and test optimistic concurrency via an update and a delete.
Inside the app, I create Bob Brightside and then retrieve the record again so I can obtain the Row Version needed to check during our Update attempt.
From our log file, I see that Bob was created and that the current Row Version is 459773:
INFO "Contact Bob Brightside created with id: 24496e99-470a-e511-80d9-c4346bac7dac"
INFO "Row Version before update attempt: 459773"
Next, I use a breakpoint in my console app to simulate the timing of two updates. One will be made in my console app and the other in the browser. In my code, I will change the First Name field on the contact to Robert. I use the new ConcurrencyBehavior property to check the row version on my update. If the Row Version in CRM matches the Row Version of the contact record I am updating, the update will succeed. If these versions do not match, or if no Row Version is specified, the update will fail. I pause at the breakpoint in order to update the contact via the CRM web interface, changing the First Name field to Mr. replacing Bob.
When I resume my console app, the update request is executed and the update fails.
From our log file, we see that the concurrency check noticed another change had occurred and prevented our update:
ERROR "Concurrency Check Failed: The version of the existing record doesn't match the RowVersion property provided."
Next, I retrieve the record again to ensure I have the latest Row Version. Our log shows this has been updated: INFO "Row Version after update attempt: 459780"
I now execute a Delete Request with the updated contact and the ConcurrencyBehavior property set to IfRowVersionMatches, and since no other updates have been made this request succeeds.
Here is a link to the MSDN article detailing this new feature for more information about the supported entities, fault codes when concurrency checks throw an exception, and additional sample code.
Are you having any issues with your CRM deployment? Concerned that you aren’t doing enough to prevent data loss? Don’t grumble, give a whistle. We can help things turn out for the best.
As many are aware, the Dynamics CRM Online 2015 Update 1 has been live for a bit of time now. With it come a lot of shiny brand new features for everyone to play with, of which we’ve been blogging about on our site for a bit of time now.
However, with all great new toys, there are usually some pitfalls to be aware of and avoid. And this release doesn’t fall short of that classification, as there is a potential headache that most customers and partners should be aware of and plan for.
Microsoft posted on their blog some good detail about some performance improvements that were made to form load times. This is great as I’ve heard from multiple customers (and experienced) the slow loading forms that seem to have popped up when CRM 2013 released with its new UI scheme.
As seen in the image below, the new rendering forms of Dynamics CRM Online 2015 Update 1 drastically improve load times of forms.
From Microsoft’s blog post, you can see details of what they changed to get this improved performance. However, with those changes comes the risk of unsupported scripts now failing. Some examples of where scripts could fail are:
- DOM manipulations
- Accessing internal iFrame URLs
- Accessing unsupported APIs
- Other windows related assumptions
However, the good news is that there’s a plan in place that you should follow to resolve these issues.
- First off, make sure that you test your environment thoroughly in a sandbox instance before updating your production instance to identify any potential issues.
- If you find something that is broken, you can temporarily turn off the new form rendering by going to your System Settings, and setting the “Use legacy form rendering” option to Yes. Note: This option to use the legacy settings is most likely going away with the next major release, so please plan on fixing your broken scripts immediately to avoid issues in the near future.
- You can also download the CRM 2015 Custom Code Validation Tool from this link, and run it on your environment to identify the usage of any deprecated API’s as well as any usage of unsupported API’s.
Moral of the story, be aware, be prepared, and have a plan. You definitely don’t want to be caught by surprise in production when you’re getting random errors loading forms. Good luck!
With the release of CRM Online Spring 2015 Update, Microsoft provided a long awaited feature for developers that we are really excited about. That feature is a built-in Plug-In Trace Log that allows developers to utilize the existing ITracingService and provide a way to see any traces without requiring an error to occur to see the trace.
Here’s how it works:
- First we need to enable the Plug-In Trace Log within the System Settings under the Customization tab. You can choose to log only Exceptions or both Exceptions and Traces.
- Next, utilize the ITracingService to write out a trace and/or throw an Exception within a plug-in
- Next, register your plug-in on the desired step as normal. In my example I am registering it on Create of an Account
- When I attempt to Create an Account record then I receive an error message with the exception that I wrote in the plug-in
- Now Navigate to the new link in Settings –> Plug-In Trace Log
- You should see a grid of all the Plug-In Trace Logs per plug-in execution
- Open up the trace record and you will see the details of any traces and exceptions that occurred with the plug-in. It also provides the duration of the plug-in execution which will definitely come in handy for performance testing.
As you can see, this feature will come in handy and should eliminate the need to use a custom entity to store any log entries. It also eliminates the need to require users to click the “Download Log” button on the error dialog in order to send the log file when an error occurs.
Microsoft recently announced the General Availability of the CRM Online Spring Release ‘15 and we wanted to share yet another one of the new features that has been rolled out to CRM Online. This post will cover the new Folder Level Tracking feature that CRM Online users should start seeing, and CRM On Prem users should hopefully see in the near future.
What is it?
Folder Level Tracking is another way for users to track emails in Dynamics CRM from Exchange. With Folder Level Tracking, you don’t need to have the CRM Outlook Client installed. This means that Folder Level Tracking will work with native mobile apps. For example, if you use a Windows Phone, you can move emails from Exchange to CRM by directly using your Windows phone and we’ll describe how below.
How does it work? Well there are two main scenarios that Folder Level Tracking supports:
- Quick Track:
- This is the scenario where you want emails to quickly be tracked in CRM without setting a regarding.
- This is equivalent of clicking the “Track” button alone in the current CRM Outlook Client
- Users can move emails to a specific folder (e.g., “Track in CRM”) and all emails moved to that folder will be tracked in CRM automatically
- Set Regarding:
- This scenario is where your emails will be tracked in CRM, and be regarding a specific record in CRM
- This is equivalent of clicking the “Set Regarding” button in the current CRM Outlook Client
How do you set it up?
Folder Level Tracking has a few requirements for it to work. First there are system level settings that need to be enabled.
- First off, Server Side Synchronization needs to be enabled and configured within CRM System Settings
- Also, Folder Level Tracking needs to be enabled within CRM System Settings
- The User’s Mailbox in CRM also needs to be setup and enabled
Now the users themselves also have to go within their Personal Options –> Emails –> Configure Folder Tracking Rules. From here they can select the Exchange Folder, and then the CRM Record (optional) they want to track the emails against.
As you can see from above and as stated earlier, these are user specific configuration rules so each user can have their own synchronization setup. That’s it! Pretty simple right?
What does this mean for me:
This is a new powerful option to track emails. The beauty of this is that you don’t need to have a separate client installed, but it’ll work with any native client you’ve been using for emails. This is available for ALL mail apps on ALL devices.
There are a few tips we recommend when using this option.
- You can setup Exchange rules to move emails to specific folders (including the generic “Track in CRM”) to have the emails automatically track in CRM based on your Folder Level Tracking configuration rules
- As stated above, you can move emails using your native mail clients (Windows Phone, iPhone, iPad, etc.) and have the Folder Level Tracking rules apply and create the email in CRM
A few notes that you should be aware of:
- The mapping between the Exchange Folder and CRM Record are using their respective ID’s, so you can change the name of the Folder or Record, and the tracking will still work.
- If an email is already tracked, and you remove it from the Exchange folder, it WILL NOT be removed from CRM. It will remain to be tracked.
- Removing a rule WILL NOT remove / delete the emails from CRM that were tracked because of it
- There is SDK support to manage the configuration rules (create, retrieve, modify)
- You can always specify a regarding for your rule at a later time if you don’t set it up upon create
- The Folder list in the Rule UI is updated periodically when the mailbox is synced via Server Side Sync and the last sync displayed on the mapping dialog
I hope you’re as excited for this new feature as I am. I’ve been a part of many mobile projects where the CRM Outlook Client isn’t installed (can’t be installed), yet the client wants to send an email from the device and have it tracked in CRM. To date there’s been no simple way to use the native mail client, and have those emails tracked, but Folder Level Tracking should solve that problem. Enjoy!
Microsoft recently announced the CRM Online Spring Release ‘15 and subsequently lifted the NDA around the release and therefore it’s time to start posting about all the great new features coming!
This post will cover the new Immersive Excel feature that Microsoft is rolling out.
What is it?
Immersive Excel is Microsoft’s new way to have a richer Microsoft Excel experience directly in Dynamics CRM. You’re no longer required to export your data to Excel to be able to perform more complex analysis on it (though this functionality still remains). You can now perform this analysis directly within Dynamics CRM.
What can it do?:
So what can the new Immersive Excel feature within Dynamics CRM do? How close to actual Excel do I get when I use it? Well the answer is that Immersive Excel is actually using Excel Online from within the CRM browser window. Therefore anything you can do with Excel Online, you can do with Immersive Excel.
This includes the ability to work with Excel Formulas directly from your list of CRM data, without leaving CRM. You can calculate what the Commission you could make for your Opportunities, by multiplying the revenue by 10%, if the probability is at least 90%.
You can make updates to records which honor field validation (e.g., you cannot enter a string into a date field, you can only select from the available option set values, min and max values, etc.), and then click on Save Changes to CRM. Or you can simply return back to the CRM list without saving your changes. Immersive Excel allows you to change multiple records quickly acting like an editable grid. However, you must click the button to save the changes before the records are updated.
You currently cannot do perform a Save As to save an Excel Doc (due to technical limitations) but you can copy/paste from the embedded Immersive Excel page to another Excel document. Hopefully this will be fixed in a future release.
In order to make use of this new functionality, the following requirements must be met:
- CRM Online (currently we are unaware of any plans to bring this to OnPrem)
- Separate O365 License required (Online version of Office)
- Export to Excel Security Role Privilege
- Available in the Web Client only (not available for the phone, tablet, or Outlook clients yet)
Miscellaneous and Summary:
Immersive Excel is a neat new tool that will provide CRM users with an additional option to perform some more ad-hoc quick queries, reports, dashboards to analyze data on the fly.
Note that this functionality is recommended purely for “on the fly” analytics, and not for someone to save the Excel file locally. Use Export to Excel for that functionality.
After 5 minutes, the file is regenerated per view per user. There is an indicator in the top right of the page shows when the file was generated. Take note of this time as Microsoft doesn’t want to bombard the servers with constant regeneration, but they also don’t want the data to become stale. Therefore if you’re using this functionality to make changes to records, remember to save early and often to make sure none of your changes are lost.
Also note that the import of the data from Excel Online will take time. A data import async job is kicked off to perform this functionality that you can monitor to see when it completes.
I hope you’re as excited about this functionality as we are, and hope you’re able to get your hands on it soon!
Microsoft recently announced the CRM Online Spring Release ‘15 and subsequently lifted the NDA around the release and therefore it’s time to start posting about all the great new features coming!
This post will cover the new OneNote Integration feature that Microsoft is rolling out.
How it Works
Now with the new release, there will be a new OneNote tab that’s part of the activity Social Pane (posts / activities / notes / OneNote). This functionality isn’t limited to only the web, but is also available on the Phone and Tablet clients as well.
A few key features and benefits of the OneNote integrate with CRM are:
- You can take photos, record voice, manage to-dos, preserve HTML & hyperlinks, use handwriting, have tables, embedded Excel docs, etc.
- Uses the native CRM Security Model for access
- Allows version history
- When performing a search, it actually searches the content of the note, and not just the title like traditional notes
- Stores notes in SharePoint not in CRM Database
- Each record in CRM has a dedicated notebook in SharePoint
- SharePoint Notebook name = CRM Record name
- Each notebook can have multiple sections with multiple pages
- All users share the same notebook
- Web Client: opens OneNote Online in a separate tab
- Tablet Client in Windows: opens OneNote app in the side-by-side experience with CRM
- Phone Client: opens OneNote App
- Notebook can be auto created when OneNote tab clicked (in the Web Client only)
- Navigate to OneNote to add new notes
There are some best practices that you should be aware of if you’re interested in using the OneNote integration with CRM.
- Pin notes on your device.
- Use side-by-side experience for windows
- Take notes quickly using Quick Notes and move to page later
- Close notebook when not using it to save OneNote performance and search results
Setup and Requirements
The OneNote integration currently is only available for CRM Online. Also, you must have the SharePoint integration enabled as the OneNote notebooks are stored in SharePoint.
You need to enable the SharePoint integration (Document Management) for the specific entities that you’re interested in storing OneNote documents for. Once you enable this on the entity definition, you then have to go into the OneNote Integration settings area, and enable OneNote for those entities. The list of entities that appear in the OneNote Integration settings are those entities which have SharePoint enabled.
Note that the OneNote integration can also be enabled from the entity itself once Document Management is enabled. So you can go to a global area to see all the entities where OneNote is enabled, or you can do it from a single specific entity.