Today’s post is co-written by Kyle Gerstner, a Principal Mobility Architect at Sonoma Partners.
With the rush of the holidays, you may not have noticed that the Microsoft Dynamics CRM team released a new set of sample mobile code that demonstrate how to connect and interact with Dynamics CRM from Windows Phone, Android and iOS devices.
Microsoft asked Sonoma Partners to create a sample code solution specifically for iOS and Android developers. In these discussions, we wanted to showcase more than a simple mobile example connecting CRM. We believed we could come up with a quick, easy to understand reference application that leverages the code samples mobile developers would use in common applications, but also be immediately valuable to the user community. Our key solution tenants were:
- Provide framework for custom mobile applications
- Phone-based application
- Simple & common use case
- Stand-alone reference application
- No CRM solution changes required
We focused our use case on something every mobile user can appreciate: the ability to quickly find a contact’s details and record an interaction with that person. The results are the Activity Tracker phone sample application!
While we focused on the iOS and Android versions, Microsoft developed the Windows Phone in parallel, providing you the code to natively work with whichever device makes sense for your organization.
This starter application code was designed for mobile developers looking to get started with Dynamics CRM for the first time, as well as seasoned Dynamics CRM developers. Activity Tracker demonstrates how to find a contact and submit one type of activity interaction (a check-in task). However, the code is open source, so you have a framework to easily add additional activity types, brand the application to your color scheme, and also add additional entities (such as account and opportunity). You can also look to extend the use case slightly for more advanced scenarios.
To demonstrate, we have extended the application for our internal use to bring back tweets from a contact. We simply added a ‘Twitter Handle’ field to the contact form and use that to make a call to Twitter, retrieving all public tweets associated with that twitter handle. As you can see from the screenshot, we also altered the design of the activity history to use a horizontal scroll, for better usability with more information sources.
The Microsoft team also has demonstrated extending the application. They have a sample that enhanced the Windows Phone example to use Cortana – bringing the power of voice commands to your CRM data entry!
From a technical perspective, the samples show you how to connect to both the SOAP and OData endpoints that Dynamics CRM uses. As a mobile developer using Dynamics CRM, you will probably use both endpoints in your custom applications.
The OData endpoint is a more common approach for connecting mobile applications, and is the primary approach taken in this sample. For example, we use OData to fetch details of the contact and get the recent records list, which comes back in an easy-to-consume JSON format. However, not all of the Dynamics CRM API methods are currently supported with OData. One example of this, is using the Execute method which was needed to mark an activity as completed. Hence the need to also demonstrate how to interact with the SOAP endpoint.
We also made use of Microsoft’s ADAL library for Objective C and ADAL library for Android, which uses OAuth to authenticate the user to CRM. Like many mobile applications, this means your user authenticates from their appropriate authentication endpoint, with the credentials they already know and commonly use. More importantly from an application development perspective, the custom application does not need or has access to your username and password. The OAuth model gives the user and system administrators the ability to revoke access if a device is lost or an employee leaves the organization, helping to further reduce the security risks generally associated with mobile applications.
We believe these mobile samples will allow you to more quickly deploy a customized mobile application for your organization and make your mobile workforce more efficient and engaged.
Ready to mobilize your workforce? We can help. Contact us to learn more about mobile CRM applications for your business.
The following is a list of the new API methods from this MSDN article. We are particularly most excited about the ability to dynamically hide/show the business process flow control.
Change the process when there are more than one process available for the entity.
Use Xrm.Page.data.process.getEnabledProcesses to retrieve information about enabled processes that the user can choose for the entity. Then use Xrm.Page.data.process.setActiveProcess to make one of the enabled processes the active one.
Move to the next stage when all required steps are completed to make it the current active stage.
Move to the previous stage and make it the current active stage.
Select a stage to view the status of the steps in the stage.
Use Xrm.Page.data.process.getActivePath to retrieve information about the stages that have been completed, the current active stage, and valid stages available from the current active stage. Examine the steps included in that stage and compare the corresponding form attribute values to determine whether they are completed.
Complete a step
Steps are completed when the corresponding data in the form is entered. You can determine the attribute using the step getAttribute method. This will return the logical name of the attribute. Then use Xrm.Page.getAttribute to retrieve attribute from the Xrm.Page.data.entity.attributes collection and then use the attribute setValue method to set the value.
Detect whether a step is required
Use the step isRequired method to determine if a step is required by the business process flow.
Expand or collapse the business process flow control
Hide the process control
Use Xrm.Page.ui.process.setVisible, you can control whether to display the business process flow control.
Skip to a valid completed stage.
Use Xrm.Page.data.process.setActiveStage to set one of the valid completed stages for the current entity.
Query the process definition including stages not currently visible
Use Xrm.Page.data.process.getActiveProcess to query the definition of the business process flow, including stages that might not be visible because of branching logic in the process.
Events for business process flows
You can interact any event provided by the form with business process flows, but two new events allow you to execute code based on events just for the business process flow control. You can execute code when the active stage of a business process flow changes (OnStageChange event) or when a stage is selected (OnStageSelected event).
The SDK team also provided a couple great samples for the new scripting methods. Check out this sample on how to retrieve information about the enabled processes for an entity and this sample on retrieving information about the stages and steps in the active business process flow path.
Microsoft recently announced new features that have come 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 came with 2015.
Next up for our review are the enhancements being made to Outlook and the Sync Process. One thing to note is that all the enhancements outlined in this blog apply to both the legacy Outlook Sync and new Server Side Sync process introduced with CRM 2013.
Below are the enhancements that are included with CRM 2015. We’ll go into a few of these enhancements in more detail later in this blog.
- Contact Phone Number and Address Sync Improvements
- Sync Outlook Assigned Task (Outlook task assigned to another user that is also in CRM). This is not enabled out of the box and a System Setting needs to be enabled to turn this on
- Sync Appointment Attachments. This is also controlled via a System Setting.
- Configurable Field Level Sync
- Outlook Client
Navigating to Settings –> Administration –> System Settings –> Synchronization will display the dialog of all the organization level settings regarding the Outlook sync process. See below.
In this dialog you have a mix of legacy pre-2015 settings, and a handful of new 2015 settings. The new configuration settings you have at your disposal are:
- Synchronized Fields: This is where an admin can modify what direction fields are synced. This is explained more below.
- Synchronize Appointment Attachments: With 2015, you can enable attachments on appointments to synchronize between Outlook and Dynamics CRM.
- Address Sync: This is explained more in the section below.
- Synchronize Assigned Tasks: An admin can enable if Outlook Tasks that are assigned to another user are tracked in CRM or not.
Contact Phone Number and Address Sync
With CRM 2015, Microsoft has changed the sync process for Contacts. 4 more phone numbers were added to the sync process for a total of 11:
- Assistant’s Phone
- Business Fax
- Business Phone
- Business Phone 2
- Callback Number
- Company Phone
- Home Phone
- Home Phone 2
- Mobile Phone
- Telephone 3
There’s also an organization level System Setting that allows you to indicate if you want to sync either A) just the Outlook Mailing Address, or B) all 3 Outlook Addresses (Business, Home, Other). This setting is available by going to Settings –> Administration –> System Settings (shown above).
Configurable Field Level Sync
One of the biggest questions we’re asked over and over with our clients is what fields are synchronized between Outlook and Dynamics CRM. There are a few sites out there that go into detail on what fields are synchronized, but nothing within the application provided by Microsoft. They also don’t easily indicate which Outlook fields synchronize to which CRM fields, the direction of the sync, and the ability to turn off that sync (in other words, all fields synchronized all the time).
Now with Dynamics CRM 2015, you can navigate to Settings –> Administration –> System Settings –> Synchronization –> Synchronized Fields. From this location, you can see the mapping between Outlook fields and CRM fields and the direction that the sync is currently configured for.
For each field you can modify the sync direction so that it syncs both ways, sync one way, or don’t sync at all. This is currently an Organization level setting that’s setup in the Settings area of CRM and one improvement that I can see here is making this a user setting so that each user can have individual unique sync experiences if for some reason they don’t want to share information about Contacts that are in their Outlook and also tracked within CRM. However, for the current release of 2015, individual users can at least view the sync directions that their administrator setup by navigating to their Personal Options –> Synchronization –> Synchronized Fields
There are a couple quick use cases that come to mind that I know most customers would be ecstatic to get their hands on:
- Private Notes: Turn off the sync process on the Outlook Notes field. Therefore users can add Notes within Outlook and they won’t flow to CRM for everyone to see. They can keep their own personal notes locally in Outlook.
- Read Only CRM Data: Set the sync direction on the desired read only fields to go from CRM to Outlook only, meaning updates in Outlook will not update CRM, and CRM will overwrite Outlook changes.
Another resource on this subject is an article that Microsoft recently published. While having this in the application is useful, this link also provides more details for administrators.
Outlook Client Enhancements
There have been changes to the Outlook Client itself in addition to the sync changes.
First off Microsoft has now added OAuth support to the Outlook Client. This enables multi-factor authorization to the Outlook client and brings consistency across CRM clients (web and Outlook).
Microsoft has also cut the clutter out of configuring the Outlook client. Users simply need to provide the Organization URL to get up and running as fast as possible. See below for what the configuration process looks in Dynamics 2013, and how much easier it is in 2015.
Also, in order to help troubleshooting issues between Client and Server, Dynamics CRM 2015 now automatically detects compatibility issues between the Client and Server. A notification is sent to the user if a compatibility issue is detected.
Finally, another troubleshooting addition made by Microsoft is when errors are detected, a “Resolve This Issue” dynamic help link will appear. This link will be dynamic and will search a server side database of articles that will route customers to the right resolution for their issue.
Upgrade Experience and Supportability
This topic isn’t really an enhancement, but goes into details on moving to the Dynamics CRM 2015 Outlook client, and what versions are supported.
In order to upgrade to the 2015 Outlook client, you must be on Outlook 2010 or higher (support for Office 2007 is being dropped). Microsoft is also dropping support for:
- IE 8, IE 9
- Windows Vista
- Windows Server 2008 Remote Desktop Services
- Windows Server 2008 R2 Remote Desktop Services
The Outlook Client must be in “Online Mode” for the upgrade to succeed, and Microsoft is allowing all 2013 Outlook Client versions to upgrade to the 2015 Outlook Client. Also, users will be able to continue to use the 2013 Outlook Client if they deploy the 2015 server. However, they’ll only be able to use it in “Online Mode” (i.e., no offline capabilities will be supported).
The recommended process for upgrading your Outlook Client is the following. This process will ensure users are able to continue to use their Outlook Clients during your server upgrade to Dynamics 2015.
- Upgrade all Outlook Clients to 2013
- Upgrade your server to 2015
- Upgrade all Outlook Clients to 2015
We hope you’ll find that these improvements will add more configurability and robust functionality to the Outlook Client. I can see some future improvements Microsoft may want to add in with the sync process (allowing administrators to add/remove/edit what Outlook fields sync to what CRM fields including the ability to sync to custom fields), but it’s good to see Microsoft is continuing to go down the path of putting more configurability options in the hands of administrators, and removing any hard coded logic.
Good luck with your 2015 upgrade, and with all upgrades, plan…test…plan…and test some more!!
Microsoft has been rolling out CRM 2015 for Online organizations (On-prem download can be found here) but before you perform the update you will want to review the new list of unsupported customizations in 2015 to see if you are currently using any of them.
Earlier in the year, in the 2013 SDK, Microsoft provided a list of things that will be changing in the next release which can also be found here in the MSDN. Only 3 functions are being removed, getServerUrl (use getClientUrl), isOutlookClient (use client.getClient) and isOutlookClientOnline (use client.getClientState). The Xrm.Page.ui.getFormType call will no longer return 5 for Quick Create and 11 for Read Optimized as those types of forms were removed/deprecated in earlier releases. Also be sure that your customizations are no longer using the old 2007 endpoint as it is removed in CRM 2015. To help detect if you are using the 2007 endpoint, you can run the Legacy Feature Check tool against your organizations.
Lastly, there have been some changes to the web application requirements for CRM 2015. Support for IE8 and IE9 has been removed with the new version. See below for a list of all the supported browsers:
- Internet Explorer 10
- Internet Explorer 11
- Mozilla Firefox (latest publicly released version) running on Windows 8.1 or Windows 8, or Windows 7
- Google Chrome (latest publicly released version) running on Windows 8.1 or Windows 8, or Windows 7, or Google Nexus 10 tablet
- Apple Safari (latest publicly released version) running on Mac OS X 10.8 (Mountain Lion), 10.9 (Mavericks), or Apple iPad
And the supported versions of Microsoft Office:
- Microsoft Office 365
- Microsoft Office 2010
- Microsoft Office 2013
As always be sure to perform the upgrade first in a development or sandbox org to verify that your customizations are still functioning post-upgrade before upgrading your production environment.
Today I am co-blogging with Blake Scarlavai, Development Principal and Microsoft Dynamics blogger at Sonoma Partners.
Recently a vulnerability in SSL 3.0 known as “Poodle” gained some significant attention, with many companies responding in various ways to ensure their customers’ data is protected. It can be confusing to keep track of what companies are doing what, and what is expected of you as a customer to ensure you are not vulnerable. Below are the summaries of the responses that Salesforce and Microsoft have taken.
Salesforce is in the process of disabling SSL 3.0 on their platform. By the end of December, you will no longer be able to use SSL 3.0 visit Salesforce’s platform. For the most part, we don’t expect this to affect our clients as the browsers which needed SSL 3.0 still enabled (IE 6 mainly) are already not supported by Salesforce. You can get the full list of the disable schedule and more information about the changes on Salesforce’s help page.
Microsoft is in the process of remediating their online services for the SSL 3.0 vulnerability. Below is a time table for each of the CRM services:
SSL v3.0 Mitigation Status
Microsoft Dynamics CRM Online
Microsoft Dynamics Marketing
Microsoft Social Listening
Parature for Microsoft Dynamics
Microsoft Dynamics Lifecycle Services
Online Services for Microsoft Dynamics
Microsoft also recommends disabling SSL 3.0 in your browser. The following resources can be used for your respective browser:
- Internet Explorer: https://technet.microsoft.com/en-us/library/security/3009008.aspx
- Firefox: https://blog.mozilla.org/security/2014/10/14/the-poodle-attack-and-the-end-of-ssl-3-0/
- Chrome: http://dottech.org/166990/how-to-disable-ssl-3-0-support-in-chrome-tip/
For more information on Microsoft’s response, click here.
Curious to find out what is new in CRM 2015? Head here to the Customer Center to see a list of new features in 2015. In preparation for the release, we have also been covering the new features in detail:
- Sales Module Enhancements
- SLA Enhancements
- Tablet Client (MoCA) Enhancements
- Hierarchical Security
- Calculated and Rollup Fields
- Enhanced Business Processes
- Hierarchy Visualizations
- Social Insights & On Prem
- Enhanced Business Rules
- Multi Entity Search
Hit us up in the comments and let us know what you think of CRM 2015 as well as any topic you would like covered further!
Microsoft recently announced new features 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.
Next up for our review are the changes being made to the Sales Module. The following list of enhancements are being made with CRM 2015 and we’ll dive into a few of them a little bit deeper:
- Product Bundles
- Cross Sell / Up Sell (via relationships between products)
- Product Families
- Territory Specific Default Price List
- Import/Export Settings via the Configuration Migration Tool provided with Leo
- Families/Products/Bundles all show up in one grid
- Clone Families/Products/Bundles (field values and all current product property values – including overridden values).
- Product Form Preview (displays the product properties so you can preview how it’d look when selling the products)
- New System Settings Configuration Options
- Override default pricing engine via code/SDK
Now lets dive a bit deeper into some of these features.
If you’ve used Product Kits in the past, you’ll be familiar with Product Bundles. Bundles are an enhanced version of Product Kits (e.g., you cannot view Kit Items when selling a Kit, but you can with a Bundle – see the Opportunity screenshot below). Product Kits will not be going away with CRM 2015, but instead Bundles will be an additional option users can use along with Kits.
Within a Bundle you can specify what Products are mandatory or not when selling the Bundle. They can also be tied to Product Families (more information below) but are not required to be. Finally, Products within Bundles have Properties that can be edited (e.g., what is the default value, is the property editable when being sold, etc.).
When adding the Bundle to an Opportunity, Quote, or Order, you’ll see the Bundle with the individual Products indented underneath. You‘ll also have the availability to edit the properties of the Products in that bundle for the specific Opportunity, Quote, or Order you’re working with.
Cross Sell and Up Sell
As stated above, using a relationship between Products, you can define Cross Sell and Up Sell products. This Product Relationships area is a sub-grid directly on the Product form.
When on an Opportunity, Quote or Order selling products, there will be a Suggestions Link that when clicked, will show the Cross Sell and Up Sell products that an administrator has defined for your organization. The user can click on Pick and then Add to List to add the suggested product to their opportunity immediately.
Product Families are another way to group products and create product hierarchies. The Child Products in a Product Family inherit the properties of the Product Family when they’re added to the Product Family, but can be overridden. Then, when adding the Product to an Opportunity, some of these properties can be modified by the Sales Person, while others may not be (defined in the Settings of the Product Family setup). The properties can be Read Only, Required, or Hidden.
Product Families are similar to Bundles, but the user cannot add a Product Family to an Opportunity, Quote, or Order like they can with Bundles. Instead, Product Families are used for administration of Products themselves.
New System Settings Configuration Options:
There are a handful of new System Setting Configuration Options coming with CRM 2015 that should be called out separately. The following settings can be configured per CRM organization:
- Indicate if the Default Price List is set via an inbuilt rule. If this is set to yes, then the default price list will be selected for an opportunity based on the default price lists defined for territories.
- Max # of Products in a Bundle
- Use system pricing calculation (override default pricing) – customers can use the SDK to have a custom pricing engine built in
- Discount calculation method: Per Unit (new option) or Line Item (previous option)
- Max # of Properties for a Product/Bundle
Some great new additions are being added to 2015 as you can see from above. However, with these new enhancements, there are still a few limitations you should be aware of:
- You cannot have bundles of bundles (only products are allowed to be added to bundles)
- Only active / retired products can be imported/exported via the configuration migration tool
Microsoft recently announced new features 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.
Next up for our review are the SLA enhancements being made. Pre-CRM 2015, users could take actions if First Response By and Case Resolved By aren’t met. CRM could also be setup to send warnings if First Response By and Case Resolved By are approaching.
With 2015, a few new enhancements have been made to make the SLA experience a bit more rich.
Automatically Pause/Resume the SLA time Calculation:
Now with CRM 2015, administrators can setup specific Active Case Status values that will automatically pause the SLA timer if the Case is moved into one of the statuses selected. When the Case is moved out of that status, the timer will resume and continue. This is configured from Settings –> Service Management –> Service Configuration Settings.
In the example below, if a Case is moved into On Hold or Waiting for Details, the SLA timer will pause (and this will reflect on the Case form). When the Case is moved back to In Progress or Researching, the SLA timer will continue where it left off. This functionality is only available with Enhanced SLAs (described in more detail in the next section).
The On Hold time is tracked per Case record so you can get a glimpse of how long a case has been on hold to follow up and provide better service to your customers.
There may be scenarios where you don’t want your KPIs to be paused, and this can be turned off at the SLA level. Therefore even though the Case moves to one of the statuses to pause the timer, cases using those SLAs will continue to count down and will not be paused.
Success actions are new with 2015 and are only available for Enhanced SLAs (described below). The Success Action can be defined by an administrator, and indicates a set of actions that will be executed whenever the success criteria of a Service KPI is met before the failure time.
Enhanced versus Standard SLA:
In Spring 2014, the SLA functionality that was delivered with Leo was Standard SLA functionality. Now with 2015, you have the ability to define an SLA as Enhanced.
With the Standard SLAs delivered with Leo, you cannot use the new pause/resume functionality of the timer, and you cannot define Success Actions. Standard SLAs cannot be converted to Enhanced SLAs.
Also, with Standard SLAs, all data is tracked on the individual case record (First Response By, Resolve By, etc.). With Enhanced SLAs, this information is all tracked on a related SLA KPI Instance records, and quick view forms are used to show specific information directly on the case (e.g., the First Response In and Resolve In timer controls below).
If you wanted to create additional KPIs that your business tracks in addition to First Response By and Resolve By, you can do this by creating new SLA KPI relationships to the Case. Doing so will automatically allow you to create SLA Items against your SLA, and define the Warning / Failure / Success criteria and actions for the new KPI.
With the new SLA KPI Instance records, you can create charts and dashboards to be able to quickly get counts of cases based on the KPI Status, and have a better understanding of how your service department is performing at a high level.
You may have heard about an issue with Lookups not working correctly with a recent version of Chrome (v38). Microsoft documented the issue here in a KB article earlier this month.
Last week we noticed that in a new CRM Online trial org with a version of (188.8.131.521) (DB 184.108.40.2060), the Chrome v38 Lookup issue was resolved so it seems that Microsoft was working on a patch. Today though we have noticed that with the latest version of Chrome (v38.0.2125.111) the Lookup issue is fixed across the board in CRM Online, CRM 2013 On-prem and CRM 2011 On-prem.
So if you or your users were stuck on v38 of Chrome then be sure to go to Settings –> About and make sure you’re updated to the latest version to fix the Lookup issues.
To check your CRM Online version, click the Gear icon at the top right and then click About.
One of the biggest pain points in CRM 2013 for an organization with a lot of custom entities, is the navigation. The user can only see a few navigation tiles per Site Map area depending on their resolution. This requires the user to scroll horizontally to find the desired tile. Being able to use the mouse wheel to easily scroll through the list of tiles is definitely nice but sometimes, with a lot of tiles, it is easy to miss the one you are looking for.
Thankfully we are here to help ease your pain! Follow the steps below in any browser for a quick, easy, and native way to find the tile you are looking for.
First, click on the main area that your desired tile is in, such as “Sales”.
Then hit CTRL + F to use the browser’s search function.
Then type in the display name of the tile you are looking for such as “quick campaigns”.
And there you have it! The browser finds the text of the tile and takes you right there so you can easily click on it and navigate to that Site Map area.