Sonoma Partners Microsoft CRM and Salesforce Blog

Metablast Updates

With the changes in Dynamics 365 and the introduction of AppSource as a way to showcase apps, it was time for Metablast to make a few changes. We are happy to announce that we have launched a Managed Solution version of Metablast, now available in the AppSource and download from our website for On-Premise Microsoft Dynamics CRM users! 

The Managed Solution version of Metablast supports Dynamics CRM 2016 and up, so if you are on a previous version of CRM the previous version of Metablast will work for you. All the features of our prior versions detailed in prior posts are included, with the addition of two new output columns:

  • Global Option Set – Displays Yes or No for Option Set fields to show the field is a global option set reference (Yes) or a local option set (No)
  • Formula – Displays Yes or No based on whether or not the field is a formula field (editor’s note: an update will be posted soon, at the original time of posting the output is the XML formula itself and not a Yes or No)

Once the solution has been added to your org, you can open the solution and view available entities in the configuration page. The left list contains available entities not yet selected for the export, and the right list contains entities you have previously selected.

Metablast 1

Typing in the search box filters the list of entities to make finding and making selections easier. Note that the check mark in the list denotes whether or not an entity is custom versus native.

Metablast 2

Selecting each entity will add it to the export list. The Add All link will add all unselected entities to the export list. Removing entities from the export list can be accomplished by clicking the red X or the Remove All link to do so en masse.

Metablast 3

Once your list is complete, you can click the Export button and download the same CSV format as your prior Metablasts.

Metablast 4

We hope you find the same great uses out of this tool with an easier way to access the schema information right from your organization!

Topics: Microsoft Dynamics CRM

Migrating Data from a MySQL Database

Today's blog post was written by Rob Jasinski, Principal Developer at Sonoma Partners.

Recently, we had a need to migrate data for a customer to Microsoft Dynamics CRM, but the data was located in a MySQL database. We have many tools, applications, and interfaces that rely on the source data being Microsoft SQL Server, so ideally we like to convert the data from a different database platform to SQL Server whenever possible. Since MySQL is open-source and considered the second most popular used RDBMS (according to Wikipedia), we use this platform more than others.

To convert a MySQL database, you’ll need to first have MySQL installed which can be downloaded from here. Then, you’ll need to install the SQL Server Migration Assistant tool. I won’t go through step-by-step on how to use this tool as there is a good blog here to get started. Instead I will go through some of obstacles I had and how I resolved them.

Restoring a Backup of the Database to Your MySQL Database

When I loaded the SSMA tool, I had issues connecting to the MySQL database. I finally had to completely uninstall the MySQL ODBC driver and re-install it to finally get a connection to work. For the SQL Server connection, SQL Server agent needed to be running so it was started. Next, check the target schema. I’m not quite sure how this is defaulted, but it was pointing to the wrong SQL database. I didn’t notice this at first and had to change it manually.

Before the data can be migrated, it must synchronized so the tables are created on the destination. The “How To” blog states it’s under Tools, but I didn’t see it there. I finally found it in the SQL Server metadata browser window, if I right-clicked the destination database, synchronize was an option.

Finally, when I tried to migrate the data, the process would start then the application (SSMA) would just suddenly close after about a minute or two. I retried several times even after a server restart and the same issue continued. After some research I found a message post to try and set the affinity of the application (SSMS) to just one CPU. After I tried that, it worked. All the data from MySQL was migrated to the SQL Server database.

Once we had the data migrated to SQL Server, we were able to use our common data scrubbing tools to clean and migrate the data into CRM.

Topics: Microsoft Dynamics CRM

Activity Feeds Are Made of This

Today's blog post was written by Ross Talbot, Principal Developer at Sonoma Partners.

Collaboration within your organization is vital to your success. Your teams may have different focuses, but they still want cross-selling visibility. The key is ensuring that information reaches the appropriate people in your organization to better serve your customers. In this series, we will focus on a few options for collaboration within Microsoft Dynamics CRM. 

We start with Activity Feeds because they are built into Dynamics CRM. Introduced in Dynamics CRM 2011 in an update after its initial launch, Activity Feeds are enabled when you create a new instance of Dynamics CRM. 

The first place you encounter the posts are the social dashboards in CRM such as the Sales Activity Social Dashboard or Marketing Social Dashboard. You can see the feed similarly in the “What’s New” area in the CRM sitemap. This feed view will show post records that are regarding your user record, your user is @mentioned in and posts regarding or @mentioning records that you follow in CRM.

Activity 1

You can also see the feed filtered down to records that are regarding or @mention a specific record by looking at the social pane on the record’s form.

Activity feed 2

Posts are denoted as either system generated or user posts.  User posts are manually created by users or by code on behalf of users (such as in a plugin). System generated posts are created from the activity feed configuration under the Settings->System area of the sitemap. 

Activity feed 2c

Here we can see which entities have been configured for Activity Feed posts. 

Activity feed 2d

We can take a look at all rules in the CRM organization via the Activity Feed Rules as well, however we will typically be looking at rules related to a specific entity.  In our case, let’s take a look at Opportunity.  Here we see that there are already 10 related rules on opportunity.  We see that a post will be generated when a new opportunity is created for a contact. 

Activity feed 2e

The text for a system generated is not something that can be altered, so if there is anything specific to the content of a record (more than the primary attribute of the record and links to the related record) this would require a workflow or plugin to dynamically set the text of the post instead of leveraging these native rules. As we create new opportunities and cases, we see the system generated posts created below.

Activity feed 2f

Users can now comment as replies to these system posts or add new posts for a record if there is more to be said regarding status, information that others may have, or just cheering a repeat customer.

Activity feed 2g

Activity feed 2h

Security regarding Activity Feeds is set in security roles as on or off (organization wide or none selected). Users are either allowed to view posts or not, and this is not context specific to the records related to the posts. User follows on the related records will affect visibility of these posts in the What’s New areas on dashboards, however, so users can target specific records that they want to see for the related activity posts. 

Activity feed 2i

In summary, Activity Feeds are useful for light collaboration within your CRM system. With a little configuration, you can see system generated messages that help alert the team to new opportunities, service requests, customers, or team wins. You can leverage user posts to help conversations along and have conversations within your CRM system regarding opportunities, support cases, or even shared contacts. If you are looking for ways to bring more collaboration into your CRM world, the easiest place to start is a tool that already exists in your system. If you travel that world and the seven seas and you’re still looking for something that fits your need, stay tuned for our looks at additional collaboration tools that integrate with CRM.

Topics: Microsoft Dynamics CRM

Dynamics 365 Site Map Designer

Previously we posted about the new Dynamics 365 App Module that was recently released with Dynamics 365.  Part of that module that we skipped over in the initial post is the Site Map Designer.

The Site Map Designer is a visual way to update your sitemap for your app.  The Site Map Designer allows you to update the default site map (which was the site map we’ve known and loved over the years for past versions of CRM), as well as app specific site maps. 

This means that now you could have more than one site map in your deployment depending on how many apps you have.  If you don’t have any apps, then you’ll have the single “Site Map” under Site Map components.  However, if you have at least one app, when you go to add a Site Map to your solution, you’ll see the default/base site map, as well as your app specific site maps.

image_thumb19

 

Launching the Site Map Designer

To kick off the Site Map designer from your app, simply click the arrow pointing up to the right on the Site Map area of the app designer.  You can also kick it off by double clicking on the specific Site Map component in your solution, but depending on the XML in the Site Map, the designer may not be able to load it (see below).

image_thumb77

You’ll be presented with a blank canvas with a default Area and Subarea already placed on the canvas for you.  You simply need to rename these using the Titles and Descriptions area, as well as update the ID, Icon, Show Groups, and URL (more details below about each site map components properties that can be edited).

image_thumb87

In the Site Map designer, you can click the + icon in the top right corner to add a new component to your site map, or you can drag / drop the component from the right side over to the canvas to add it to your site map. 

image_thumb[4]

The table below shows the components that can be added onto the canvas, along with the properties per component that can be configured.

Component Properties
Area ID
Icon
Show Groups (flag)
URL
Titles
Descriptions
Group ID
Set as Profile
URL
Titles
Descriptions
Sub Area Type (Dashboard, Entity, Web Resource, URL)
ID
Icon
URL
Parameter Passing
Offline Availability
Entity
Default Dashboard
Titles
Descriptions
Privileges (Entity, then All/Create/Read/Write/Delete/Append/AppendTo/Share/Assign)
SKUs (All, OnPremise, SPLA, Live)
Client (All, Outlook, Web, Outlook Laptop Client, Outlook Workstation Client)

 

If you add an entity to the Site Map that’s not a part of your App artifacts yet, it’ll automatically get added to your App without any forms, views, or charts selected for filtering.

Note that some of the Sub Area options become read only based on the type you select.  For example, if you don’t select Entity as the type, then the Entity dropdown that allows you to select the entity is read only as it only applies to that type of component.

 

Troubleshooting

If you wanted to, you can still export the app specific site map, and mess with the XML directly (if you’re courageous).  However, if you do so, be careful because some of the preexisting site map XML is not supported in the site map designer.  For example, I stole the “Settings” and “Training” areas of the main site map for my custom app specific site map, and had to comment out the following in my app specific site map because the designer wouldn’t load with it included.

<!--SubArea Id="nav_plugintrace" ResourceId="Homepage_PluginTraceLog" Icon="/_imgs/area/Plugin_TraceLog_32.png" Entity="plugintracelog" Client="Web" IntroducedVersion="7.1.0.0">
  <Privilege Entity="plugintracelog" Privilege="Read" />
</SubArea-->
         
<!--SubArea Id="nav_systemjobs" ResourceId="Homepage_SystemJobs" DescriptionResourceId="SystemJobs_SubArea_Description" ToolTipResourseId="SystemJobs_SubArea_ToolTip" Entity="asyncoperation" Url="/tools/business/home_asyncoperation.aspx" AvailableOffline="false" IntroducedVersion="7.0.0.0" /-->
         
<!--Privilege Privilege="LearningPath" /—>

Until I commented those out, I would receive an error such as the following when I tried to go back into the Site Map designer.

image_thumb92

However, after I removed all the unsupported XML, I was then able to go into the Site Map designer and see all the Settings and Trainings components in my site map and I had the ability to tweak them using the new Site Map designer way, versus the old manual XML updates way.

image_thumb96

Topics: Microsoft Dynamics 365 Microsoft Dynamics CRM Microsoft Dynamics CRM Online

Dynamics 365 App Module

 

 

As with any release, the release of Dynamics 365 yesterday has introduced a bunch of new features.  Head over to the CRM Roadmap site, or the CRM What’s New site to see first hand the features that have recently gone live.  You can also see what’s in preview, in development, previously released, or indefinitely postponed.

 

App Module

With this release, a new concept has been introduced to Dynamics 365 for Sales (formerly Dynamics CRM).  This concept is the ability to have multiple Apps within the product.  First off, note that this feature is in preview only mode for this release. 

What is an app? Well in its simplest form, this is a collection of related entities, dashboards, and business process flows that will allow you to streamline and tailor Dynamics 365 for Sales so that your end users in different business areas can see only the pieces of the product that matter to them.  It also allows you to filter sub components of what you add – for example, your users only see a specific view of an entity you’ve added.

You could perform portions of this functionality with the older versions of Dynamics CRM.  For example, you could have only specific forms or dashboards display for users in specific security roles.  However, everything in your solution was in a single site map and you had to manage it as such, which forced configurators to always remember that the application they’re designing and building is visible to all users, unless they update the specific dashboards and forms to be visible only to users in a specific security role (by default they’re visible to all).

However, with the introduction of Apps for Dynamics 365 for Sales, configurators can now more easily put components that they want specific users to have visibility to into a specific app for those users.  This means that when you have new users rolling onto CRM, you can easily create a new security role for them, and then start putting the components of the system into their own app that only they’ll have visibility to.  Also you can filter what sub components of those artifacts you want visible in your app – this functionality doesn’t exist in previous versions of the product.

Also of note is that your apps will have a unique URL should you want to provide that to users to navigate to directly.  The URL will be in the format of <crmurl>/apps/AppName.

 

App Creation and Basics

When you create a new App (done from the solution since apps are solution aware), you’ll need to provide a few pieces of information.  Note that the Application URL will be the name used at the end of the URL for the application specific URL mentioned above.  This (along with the Unique Name) cannot be changed once you click Done on this initial app creation page.  The Name, Description, and Use Default Image can be modified after creation.

image

After providing the basic information above, you’ll be taken into the designer area of the app.  From here you’re able to add the following components to your app.

  • Site Map – this is required and will is discussed in more detail in this blog post
  • Dashboards – you can filter what dashboards display in your app
  • Business Process Flows – you can filter what business process flows appear on entities for your app
  • Entities – you can filter what forms, views and charts appear on the entities for your app

After you add each of these components, you’ll have different properties to set for each.   For entities, you’ll be able to select which Forms, Views, and Charts are available in your app.  After you start adding components, your app will start to accrue a list of other dependent components that.  For example if you select a form that has a view from another entity used in a sub grid, you’ll need to make sure that view is in the target environment you’re deploying your app to or the deployment will fail.  If it doesn’t exist, simply make sure to add that component to the solution prior to deployment.

Note:  If you do not select any forms, views, or charts for an entity in your app, that entity will still display in your app but all forms, views, and charts will be displayed for it.  Even though you’ll get a warning when validating your app (see validation details below), the app will still work and show you all components of that entity without filtering some of them out.

image

image

With Dashboards and Business Process Flows, you simply have the option to select which of those you want to include in your app.  Note, when you do this, if there are entities that are required for the dashboard or business process flow that you add, they’ll automatically be added to your app.  However they’ll be added but no sub components of them will be added (forms, views, or charts) which will throw warnings during validation (as discussed above).  We'll review validation in more detail in the next section. 

These entities will be added but are not needed in your app.  They’re only needed if you want to further filter out the forms, views and charts that are visible to end users.  If you don’t want to filter them out and want to keep your app clean, you can simply click on the entity name and then click on the trash can / remove icon on the top of the page to remove it from your app.  Doing so will provide you a confirmation dialog prior to removing the entity.

image

In addition to removing an entity from the app, you can also click on the Edit button that will open up the entity in an entity specific solution window.  Finally, the Add button will let you quickly add another artifact or entity asset to the app.

image

 

Validation

As stated above, once you start adding components to your solution, you’ll app will start to take on dependencies which means that if they’re not in the target environment you’re deploying your app to, your solution import will fail.

For example if you select a form that has a view from another entity used in a sub grid, you’ll need to make sure that view is in the target environment you’re deploying to.  If it doesn’t exist, simply make sure to add that component to the solution prior to deployment.

To validate your app, simply click on the “Validate” button at the top right of the app.  You’ll get a summary at the top that you’ll be able to expand and see more details of what errors and/or warnings the validation identified.  You’ll also see on the visual designer the components highlighted that are causing the dependencies.  Finally, if you click on the “Required” tab on the right pane, you’ll be able to see a list view of the dependencies for the components added to your app, and those components are already added to your app will be checked off.

image

image

image

 

App Deployment

As stated before, an App is solution aware which means that you can put the app into a solution when you’re ready to promote it from Dev to QA to Production.  Remember that if you have new components you created for your app (such as an app specific site map), those components also need to be included in your solution or the deployment will fail.

image

Also note that while you’re working on your apps, you don’t need to go through the Apps solution component to be able to resume development on the app.  You’re also able to see your published apps and apps being edited by going to Settings –> Application –> My Apps.  The default app that contains all your configuration and site map prior to the new app concept will be the only published app out of the box.  This app cannot be edited through the app designer and needs to be edited the old way through solutions.

image

When the app is unpublished, you’ll be able to click on the ellipses and select Publish or Open in App Designer. 

image

image

Once you have your custom app published, you’ll be able to Manage Roles to indicate what security roles should have access to view the app.  By default, only the System Administrator and System Customizer roles have access to view the app so don’t be worried that you’re only able to get to this screen after the app is published (which means if all roles had access to the app there would be a period of time between publishing and removing roles, that some users may have access to the app – that’s not the case).

image

 

Using the App

After the application and site map have been completed and published, you access your new app via the app switcher which is the breadcrumb just to the right of the O365 tiles icon.  You can quickly jump between all the apps you’ve developed via this app switcher.   You also have the ability to “Pin This App” which will pin the app to the Home area.

image

Clicking the top Home icon will take you to https://home.dynamics.com/ which is a new home for all of your Dynamics 365 business apps.  As mentioned above, your pinned apps will appear in a separate section on this page.

image

Note that when testing out the new Apps functionality, I ran across what seemed like a couple defects with the Home area.

  • The Home area doesn’t seem to load when using IE11, but will load fine with Chrome
  • After clicking in the Home area, when I went back up to the App Switcher, only my pinned apps appeared for me to select.  In my example below, you’ll see that I no longer see the “Dynamics 365 – custom” app that I saw in my screenshot above.  Once I navigated to an app, it reappeared for me.

    image

If you click on “My Apps” in the App Switcher, you’re able to see all apps, and also search for apps should you have a lot in your list.  You’ll also see in this list any other CRM organization you have access in your O365 deployment allowing you to quickly jump to those orgs from your current org.

In the main menu under “Home” you’ll see just the current Dynamics 365 organization apps.  Additionally, you’ll see a light blue vertical bar to the left of the apps for the current org you're in.

image

When in your app, you’ll only see the dashboards, entities, forms, views, charts, and business process flows that you included in the design of your app.

image

 

Final Thoughts

Apps are another great feature for this continually evolving product.  We’re excited to see where this concept goes in the upcoming releases (what other components they allow you to configure to be app specific), and are as always excited for all the new features being released with Dynamics 365.

Stay tuned for more new Dynamics 365 feature reviews.

Topics: Microsoft Dynamics 365 Microsoft Dynamics CRM Microsoft Dynamics CRM Online

Amazon Alexa and Dynamics CRM

Here at Sonoma Partners we’re always looking for ways to use the latest and greatest technologies with CRM.  With voice dictation services becoming more and more prominent, we decided to put Amazon’s Alexa service to the test.  Using an Echo device, we were able to develop and test an Alexa Skill that can interact with Dynamics CRM using node.js.  The process was surprisingly easy as Amazon provides native OAuth configuration so we were able to connect to CRM’s Web API with little effort.

We recorded the whole process of building an Alexa Skill, check it out below!

Topics: Microsoft Dynamics CRM Microsoft Dynamics CRM 2016 Microsoft Dynamics CRM Online

Offload Processing with Azure Functions

Earlier this year, Microsoft announced Azure Functions which provide the ability to run code that can be triggered by events from within Azure or from third party systems or even scheduled at certain intervals.  There are many ways Azure Functions can be used to benefit your CRM system.  In this article, I will walk through how an Azure Function can be built and triggered from a plugin in CRM for asynchronous processing outside of the native CRM async service.

Note: Azure Functions are still in preview state and therefore provided “as-is” and may not be covered by customer support.

First, head to your Azure org and add a new resource.  Search for “Function App” in the filter.

image

Select Function App and click Create and then specify a unique name for your Function App and which resource group and plan to add it to.

In our scenario, we are going to trigger the function from a CRM plugin so we want to choose the “Webhook + API” scenario and I’ll be using C# for this example but JavaScript could be used as well if desired.

image

Now the Function App is created and a sample function is already setup with a Url that can be used to trigger the Function.  The sample Function looks for a “name” property in the request and returns a message back to the client application using the “name” property that was passed in.

image

With this basic sample, you could be good-to-go already, if you don’t need to interact back to CRM.  You could have your CRM plugin pass in the necessary data and let your Function do with what it needs, such as processing that data and then sending it off to a third-party system.

But what if you need to query CRM for more data or make some updates within CRM?  In order to do so, we need to do a little bit more work.

First, we’ll need to add some NuGet packages that our Function can reference to connect to the CRM API.  In order to do so, we need to add a project.json file to the Functions folder where it is hosted in Azure.

  • Click “Function app settings” at the bottom left of the Function app screen

image

  • Click “Go to App Service Settings” in the Advanced Settings at the very bottom of the screen

image

  • Under the “DEVELOPMENT TOOLS” section, click “App Service Editor”

image

  • Click “Go” on the next screen and it will open a new browser window
  • Expand your Function app node under the WWWROOT node then right-click and select “New File”

image

  • Type project.json for the file name
  • Update the project.json file with the following:

{
  "frameworks": {
    "net46":{
      "dependencies": {
        "Microsoft.CrmSdk.CoreAssemblies": "8.1.0.2",       
        "Microsoft.CrmSdk.XrmTooling.CoreAssembly": "8.1.0.2",
        "Microsoft.IdentityModel": "6.1.7600.16394",
        "Microsoft.IdentityModel.Clients.ActiveDirectory": "2.18.00"
      }
    }
   }
}

The necessary NuGet references for the CRM SDK are now added.  You can now either go back to the main Function app screen in Azure or just use the App Service Editor to edit the Function code in the run.csx file.  We will want to add the following namespaces to the top of the Function:

using System.Net;
using Microsoft.Crm.Sdk.Messages;
using Microsoft.Xrm.Tooling.Connector;

Now we can utilize the CRM SDK to connect to our CRM environment with a connection string like so:

var orgUrl = "https://org.crm.dynamics.com";
var username = user@domain.com;
var password = "password";
var authType = Microsoft.Xrm.Tooling.Connector.AuthenticationType.Office365;

var crmSvc = new CrmServiceClient($@"ServiceUri={orgUrl};AuthType={authType};UserName={username};Password={password}");

Now we can use the org service to do whatever we need within CRM.  For this basic sample, we’ll just do a simple WhoAmIRequest and log the result to the Function app console to make sure everything is working correctly.

var request = new WhoAmIRequest();
var response = (WhoAmIResponse)orgService.Execute(request);
log.Info(response.UserId.ToString());

The final Function should look like so:

using System.Net;
using Microsoft.Crm.Sdk.Messages;
using Microsoft.Xrm.Tooling.Connector;

public static void Run(HttpRequestMessage req, TraceWriter log)
{
    var orgUrl = "https://org.crm.dynamics.com";
    var username = "user@domain.com";
    var password = "password";
    var authType = Microsoft.Xrm.Tooling.Connector.AuthenticationType.Office365;

    var crmSvc = new CrmServiceClient($@"ServiceUri={orgUrl};AuthType={authType};UserName={username};Password={password}");

    var request = new WhoAmIRequest();
    var response = (WhoAmIResponse)crmSvc.Execute(request);
    log.Info(response.UserId.ToString());
}

 

Now click Run and in the Logs section you should see a Guid of your System User ID in between the Function started and Function completed statements.

image

You can then use a simple app like Postman to test submitting a request to the unique Url that Azure gave you for your Function app.  Once you submit the request, check your Logs in the Function app and you should see your System User ID logged again.

The last step would then be to build a standard CRM Plugin on the desired event and have it submit a request to your Function app Url to kick off the process.  Microsoft Flow could also be used to trigger an event from CRM and call your Function app without building any custom code at all.

There you have it, we can now utilize Azure Functions to free up some CRM processing but of course there are some caveats.

  • If you are on the “Dynamic” service plan, Azure Functions will currently only run for 5 minutes before timing out.  This still gives us 3 more minutes than an asynchronous plugin in CRM but be cautious of long running processes.
  • If an error occurs, there won’t be any ability to reprocess like there is with an asynchronous plugin in CRM.  You will need to build that into your Azure Function.
  • Lastly, Azure Functions aren’t free (they are cheap however).  If you have long running, memory intensive processes that will trigger often then you should consider the pricing.  Pricing details can be found here.  Microsoft gives 400,000 GB-s for free each month so if you have 1GB of memory allocated to your Function, it can run for 400,000 seconds per month without having to pay a single dime!
Topics: Microsoft Dynamics CRM Microsoft Dynamics CRM 2016 Microsoft Dynamics CRM Online

CRMUG Summit 2016 Recap

Earlier this year, Microsoft announced that it’s Convergence conference would be replaced by Microsoft Envision.  Envision would be meant for business leaders looking for a more strategic vision, while  Microsoft Ignite would be intended to be the conference that provided more hands-on and deeper technical content.

CRMUG Summit, on the other hand, is a conference not run by Microsoft, and instead run by users for users.  However, what we’ve seen this year is that the Microsoft presence at the Summit was greatly increased from years past.  The Summit actually is meant for more than just Dynamics CRM as there are user groups for all of the Dynamics Products (AX, GP, NAV).

Image result for crmug summit

All In for Summit!

After attending both Ignite (in Atlanta) and CRMUG Summit (in Tampa) this year, it’s clear that Summit is getting more and more focus as the years go on, and seems to be the conference to attend if you’re a Dynamics CRM customer or prospect.  There were 1550 CRM attendees this year - triple the amount from last year.  At Ignite there weren’t as many Dynamics sessions, whereas CRMUG Summit was chock full of sessions led by end users, MVP’s, and Microsoft employees.  You could feel more than ever this year Microsoft’s increased presence and Tampa Florida skyline stock image for Tampa Uber promo code postcommitment to the event.  Jujhar Singh, Corporate Vice President at Microsoft, brought most of the product team along to the conference and was also a main presenter at the CRMUG Keynote.  Scott Guthrie, Executive Vice President at Microsoft, was also in attendance and led the overall Summit Keynote.  Scott’s keynote showed Microsoft’s large push for PowerApps, Flow, and their Azure framework.  He also talked about Dynamics 365, and the tighter and enhanced integration coming between Dynamics 365 and Office 365 such as Outlook.  Jujhar went deeper into discussions around Dynamics 365, and he also announced the integration between Dynamics 365 for Sales, and Predict by Versium (discussed in more details below).

It definitely seems like Microsoft is increasing their presence at Summit (as they did this year), and our hope is that this continues.  If so, we definitely recommend users attend Summit 2017 in Nashville.

Dynamics 365

Of course the big topic at CRMUG Summit 2016 was all around Dynamics 365, Microsoft’s suite of Dynamics products.  No more are the days of Dynamics CRM, but instead users will need to get used to the new moniker Dynamics 365 for Sales.  The different products that will be available with the upcoming release (slated to be released to the cloud in the next month) include:

  • Dynamics 365 for Sales
  • Dynamics 365 for Customer Service
  • Dynamics 365 for Field Service
  • Dynamics 365 for Project Service Automation
  • Dynamics 365 for Marketing
  • Dynamics 365 for Operations
  • Dynamics 365 for Financials
  • Dynamics 365 for Customer Insights

These products currently exist but are being entirely rebranded (e.g., “Dynamics CRM” becomes “Dynamics 365 for Sales” and “Dynamics AX” becomes “Dynamics 365 for Operations” and so on).  However, Dynamics 365 will allow users to quickly jump from one application to another within the same session, further unifying CRM and ERP capabilities.

Along with the new naming of the products and unification of Microsoft’s flagship CRM, ERP, and Office suites, the upcoming release also introduces other new features.  Stay tuned for future blog posts detailing more of these newly released features for Dynamics 365.  Until then, know that you can expect to see more around the user interface, configurability, built in intelligence, proactive insights, enhanced visualizations, enhanced Outlook integration, enhanced navigation, and much more.  Sounds pretty exciting, right?

Predict by Versium

During the conference, Microsoft announced a new integration with Versium Predict, an automated predictive analytics solution that brings lead scoring and lead matching directly to Dynamics 365 for Sales. 

With Predict, users can build a predictive model directly from CRM that will allow them to add insights to enrich current data in the system with thousands of new attributes (e.g., hobbies, SIC Code, revenue, social handles, number of employees, demographics, etc.) from Versium’s extensive data warehouse.  Versium has trillions of data points in their data set, and users will be able to build a customer-based model or a business-based model directly from Dynamics 365 for Sales.

After your predictive model is built, with Predict by Versium and Dynamics 365, users will also be able to build a new list of leads and add them to a new marketing list.  Note:  Microsoft strongly enforces the importance of having data already in Dynamics 365 (500 records for a business list model and 1000 for a customer list model) in order to build a successful predictive model.

Thanks Tampa – Hello Nashville!

Once again Tampa was a great host city for Summit (the 2013 Summit was also in Tampa).  The weather was great - even though the east coast had previously experienced some extreme weather the week before - and the conference content didn’t disappoint.  It would be an understatement to say all of us at Sonoma are excited about Dynamics 365 and the announcements from Summit, as well as new features that are coming with the latest release of the product.  We can’t wait.

Image result for nashville tennesseeIf you’ve never been to a CRMUG Summit, we definitely recommend you register for next year’s summit in Nashville.  If this year’s was any reflection of where the conference is headed, next year’s should be much bigger with more product announcements and roadmap discussions.  Each year, Summit has grown at exponential rates, and the involvement seen from Microsoft this year is certainly encouraging.  We’re hoping that they return in full force next year as well.

Stay tuned for more announcements about Dynamics 365 and the new features that will soon be released.

Topics: Microsoft Dynamics 365 Microsoft Dynamics CRM Microsoft Dynamics CRM 2016 Microsoft Dynamics CRM Online

Learning Path - Dynamics CRM 2016 Guided Help

With the Spring 2016 release of Dynamics CRM came a guided user experience that provides context-sensitive and interactive tasks for end users to more easily become familiar with Dynamics CRM.  Remember, you can always review the features on the roadmap from this link.

What is it?

Learning Path, adds a new icon to the main navigation bar of CRM.  This conversation bubble with a question mark icon will appear in the top right corner of the CRM window if you have Learning Path enabled (see below for more information about turning this feature on or off).

Clicking on this Learning Path icon will slide out a pane on the right side of the CRM window that will allow users to do the following:

  • Learning Paths:  These are content areas where videos, text, guided tasks, and more.
  • Guided Tasks: These are step by step instructions that guide users through specific CRM tasks (see below)
  • Videos:  Learning path has full support for inline video within the pane that appears on the right
  • Navigation:  There’s the ability to navigate between pages of the Learning Path module using left / right arrows.  The user can also navigate to the home page by clicking the icon of the home.  And they can also “Send a Smile” or “Send a Frown” on any particular page of the Learning Path module

As users progress through Guided Tasks, their progression is saved and they’re able to see this in the learning path pane with a checkmark next to that specific task.

image

Guided Tasks

Guided Tasks are a way for users to learn an aspect of the CRM system, by doing it as areas of CRM are pointed out along the way.  As a user completes a guided task, a checkmark appears next to the task.  However the user can complete the task as many times as they’d like in case they’d want a refresher on how to complete something in CRM.

For example, if you clicked on the “Let’s go! Sales basic tour” you’d see the following set of steps in your guided task as it takes you around the basic aspects of sales within Dynamics CRM.

image

image

image

image

image

Enable or Disable Learning Path

Each user has the ability to disable Learning Path for themselves by clicking on the Options icon, and selecting Opt out of Learning Path or Opt in for Learning Path.

image

Alternatively, your system administrator can turn Learning Path on or off at an organization level by going to Settings –> Administration –> System Settings.  On the General tab, Set custom Help URL section, you can toggle the setting for Enable Learning Path.

image

Limitations

Since this is the first release of Learning Path, there are obviously some limitations.  First off, this is only available for CRM Online.  Like most features with Dynamics, features are released to the cloud first, and then as it makes sense, are released for CRM OnPremise.

Another limitation is that the usage metrics (who’s completed what guided task, when, and how many times) is currently not available.  This could be very useful for companies that are trying to gage user adoption, as well as training opportunities for loud users who complain they don’t know how to complete a specific task, but at the same time haven’t completed the guided task that shows them exactly how to do what they’re looking for.

Finally, Learning Path isn’t currently configurable.  This one probably hurts the most currently.  What you’ll get out of the box is predefined learning paths for onboarding, and for those who have spun up a CRM Trial instance, they’ll get learning paths around the trial and how to convert the trial into a purchase.  I see the first thing our clients will ask us as we show them this is how can we configure it, and unfortunately at the moment, the answer is you cannot.  Configuration and usage metrics are two areas that Microsoft will most likely be investing in as they build out this feature in the near future.

Topics: Microsoft Dynamics CRM Microsoft Dynamics CRM 2016 Microsoft Dynamics CRM Online

Speeding Up Web Resource Development with Imposter for Fiddler

Today's post was written by William Dibbern, Principal Developer at Sonoma Partners.

Anyone who has built a web resource for Dynamics CRM can tell you how frustrating it is without the right toolset.

Since all HTML, JavaScript, CSS, and images are stored in the database, they must all be uploaded through Dynamics CRM. Without a tool, you're left locating the web resource in a solution and using a web form to upload your changes. Try to use the built-in editor and you could risk formatting issues. All over GitHub and in the SDK you can find tools for helping to keep your local files in sync with CRM's copy by uploading them through the API. While that will certainly alleviate a lot of the pain, what if we could go further?

Let's do just that and take a look at a tool called Imposter.

What is Imposter?

Imposter is an extension to the widely popular Fiddler which allows you to serve up files from your local file system in response to requests from your browser.

The way Imposter works is that it hooks into Fiddler's API to see when the browser requests a web resource from the Dynamics CRM, and it uses some simple logic to figure out which file on your local system it should send in place of whatever the server has.

This has two advantages:

  1. You can make changes in the editor of your choice (I'm really partial to Visual Studio Code, but that's a story for another day.) and see those changes reflected immediately in your browser without having to upload the file to CRM and publish every time you make a change.
  2. You can make changes to the file and test them out without affecting anyone else accessing the system. Working on a rewrite of some JavaScript but need other developers to be able to keep working with the legacy code and only have one development environment? No problem anymore!

If you're familiar with Fiddler, you may be familiar with its AutoResponder functionality and therefore may be wondering what the advantage of Imposter is over this built-in functionality. Here are a few key points:

  1. You have to setup a rule per file if you want to swap out, manually. If you're clever, you can do this with a regex to swap out a whole directory however, Imposter lets you skip the regex and map a local directory to a URL fragment so you can serve up an entire directory of files with only one setting.
  2. Imposter comes with an implementation of "hot reloading" which means whenever you save changes to your code, the page is automatically refreshed to display the latest.
  3. When you start using Imposter you'll also notice it has a concept of "profiles." Each profile is a combination of a base URL to look for (so that Imposter knows when to try to swap out files and when not to), a local directory (where Imposter will look for files that match those that were requested), and some overrides (for when your file system and CRM don't line up perfectly). With these profiles, we can support working on multiple projects at the same time. This looks a lot cleaner than a bunch of rules in AutoResponder.

How do I use Imposter?

Once you've got Fiddler and Imposter for Fiddler installed, you'll see a new icon in your menubar. If you click it, you'll see several options. Let's start with adding a profile first.

Adding a Profile

  1. Click Imposter.
  2. Click Profiles.
  3. Click Add New.
  4. Notice a setting dialog opens.
  5. For Profile Name, we enter a friendly name for our profile. This name can be anything and is simply an identifier for you.
  6. For Base URL, you'll want to enter a fragment of the URL that you're going to be asking Fiddler to keep an eye on to swap files for.

Since we're working in CRM, we can just enter /WebResources/publisherprefix_/ (where "publisherprefix" is the prefix you've chosen in your solution, by default "new") and what Imposter will do is wait for any request that contains /WebResources/publisherprefix_/ in the URL, and it will attempt to parse a file name from that string.

So let’s say your browser requests a webpage at https://crm.organization.com/WebResources/publisherprefix_/CustomSearch/index.html?data=awesome, Imposter will see the /WebResources/publisherprefix_/ segment of that URL and will start looking for a file in the CustomSearch folder called index.html. If found, Imposter will serve that file up in place of what the server has.

  1. In the Local Directory field, you'll enter the base path on your file system that Fiddler should try to use to look for matching files. Continuing the example in the previous step, if you entered C:\MyVisualStudioSoltion\WebProject\, Imposter would look for html in C:\MyVisualStudioSolution\WebProject\CustomSearch\.
  2. If you have any files that wouldn't match the pattern given in the previous step, like if you've been uploading your web resources as html instead of "namespacing" them like new_/index.html, then Overrides are where you go.
    Tip: If you're unfamiliar with simulating directories with CRM Web Resources, you can read a basic introduction on that here. You can put in any URL fragment you'd like to match on (ex. index.html) and then past in the complete path to that file on your file system.
  1. Click Save.

Fiddler image 1

Enabling Imposter

Now that we've got a profile created, we can start things up.

  1. From the File menu in Fiddler, ensure Capture Traffic is checked. Having this turned off is like hitting the circuit breaker, no extensions will work as no traffic will be captured.
  2. From the Imposter menu, navigate to Profiles, then select your profile name, then click Enable. Note you can turn on as many profiles as you'd like.
  3. Notice in the Imposter menu now that Enabled is checked. You can quickly turn on or off Imposter from this menu without losing the state of which of your profiles are enabled/disabled.
  4. Clear your browser's cache and navigate to a web resource in CRM. You should see your local file system's changes being served up in the browser, and in Fiddler you'll see a blue highlight on web resources that were requested, matched, and replaced by Imposter.
    Tip: Fiddler’s highlighter can be glitchy, so if you want to know for sure whether a file was swapped, add the X-Imposter response header to the results grid in Fiddler.

Auto Reload

I bet you noticed the Auto Reload option in the Imposter menu, didn't you? Wondering what that is? When Auto Reload is enabled, Imposter will monitor the Local Directory in any enabled profile(s) and wait for changes. If it detects a change, any HTML web resource that was already swapped out by Imposter will automatically refresh itself to account for the newest updates. Awesome, right?

I would recommend using caution with this feature, though. If you swap out an HTML web resource hosted in an iframe, any event handlers attached to functions in that iframe could be broken when it refreshes, making the utility a little less useful. For that reason, I primarily use this feature for dialogs and fully custom pages.

Where is it?

All this talking and no links to download? Well here ya go: Imposter for Fiddler on GitHub. The tool is hosted on GitHub, so if you'd like to submit a feature request or any other changes, feel free! There is also a Wiki on the GitHub repository which has some great tips and tricks for using Imposter. Enjoy! 

Data shows no emotion

Topics: Microsoft Dynamics CRM