Sonoma Partners Microsoft CRM and Salesforce Blog

CRM 2016 Excel Templates

Today's post is written by Argyris Anargyros, Development Principal at Sonoma Partners.

If you find yourself creating the same old Excel document using CRM data time and time again; here is a way for you to do it once, and let others get what they need from your Excel experience.

Struggling with user adoption of your Microsoft Dynamics CRM system? Deploy Control Tower to get the data you need to measure and drastically improve end user adoption.

With Dynamics CRM 2016, Microsoft has made this easier by making it possible for folks to be self-sufficient.  This new Feature can be found at the top of most entities command bar.


Here you have the option to use an existing template or create your own. To create your own, select the Create Excel Template option and you will be presented with a summary of what this will do.


 Click on Try it out and you will be presented with the screen below.


At this point we are given the option to select the view for that entity. If you need to modify the columns of your view, you can click on the Edit Columns link and the view editor will present itself.

Once your view is ready, click on the Download File button. This will generate and download an excel file that is connected to your CRM instance with the view of you data in Excel.


Now you can start formatting this excel file as needed. Let's say you want to add a tab with a pivot table, leaving your data in the original tab. All you need to do is click on the Insert tab in Excel and click on the Pivot table button. There you will be given the option to point to an external data source as represented in the screen shot.


Click on Choose Connection. Select the Tables tab and there you will find the table created from your view in CRM.

Select that table and click Open and then OK.


A new tab should open with the standard Pivot table setup in Excel. Select the fields for your pivot and you should end up with something like this.


Once we have our Excel file ready and formatted, we can upload it to CRM.

Follow the steps above to get back to the Create template from CRM data screen and click the Upload button.


Drag or browse to your saved Excel file and click on the Upload button.

Once the template is uploaded, you will be taken to the template’s CRM record, where you can rename it if you like, and add a description.


Now your excel template is ready for anyone to use. Users can go to the Excel Template button and select to open the template you created.


Downloading the template will bring it locally and you will be able to refresh the data by refreshing the connection at any time. If you have Office 365 you can open in Excel Online and do the same.

This was a very simple example of what you can do and CRM has an out-of-the-box template with even more.


For more details on Excel templates, you can access Microsoft’s how-to here:

Check out other new features from the 2016 update here:


Topics: Microsoft Dynamics CRM 2016

Lost in CRM Translations

Today's post is written by Mike Dearing, Development Principal at Sonoma Partners.

Alright, so you’ve finished customizing your organization and applying your company’s color palette to every nook and cranny of the application, but one task still remains – supporting your multi-lingual user base. While it may sound overwhelming, translating literally every string in your organization, keep in mind that you’re only responsible for any of the labels you and your team have put in place – Dynamics will handle everything that is native.

Below, I’ve broken down the types of translations that should be considered for your organization into 5 general categories.  But first, a few pre-requisites:

  • Ensure that you have the CRM System Administrator security role.
  • Change your language to the organization’s base language within your user settings.

  • Install Excel or an Excel equivalent.

Native User Interface

This includes out of the box components such as native entity names, native field labels, native ribbon buttons, native sitemap tiles, etc.  Dynamics provides translations for their native UI which can be enabled through system settings.  While the base language of your organization is already enabled, if an additional language is desired it must first be provisioned for usage.  For Dynamics Online customers, this process is simplified, as all available language packs are pre-installed on your server.  For Dynamics On-Premise customers, you’ll need to download the language pack(s) that you’d like to provision from the Microsoft Download Center before completing the following steps.

  1. Navigate to Settings -> Administration -> Languages.
  2. Place a checkmark next to any additional languages to be provisioned (ex: Spanish).  Take note of the ‘Language Code’ column, as we’ll be using that throughout the other translation steps.
  3. Press ‘Apply’.

  4. Read and accept the confirmation dialog.

  5. The language will start provisioning.

  6. You may close the dialog once the provisioning has completed.  Users may now select the language from their user settings.

Custom Entities & Fields

Native entities and fields will have been translated through provisioning of the corresponding language packs.  However, custom entities, custom fields, and any relabeling done for native fields will need to have translations applied.

  1. Navigate to Settings -> Solutions.
  2. On the solutions grid, if you haven’t done so already, go ahead and create a solution containing any custom entities and native entities that you’ve customized.  This will make our translation process quicker than trying to export translations from the default solution.
  3. From the solution grid, select your solution and then press ‘Export Translations’.

  4. A dialog stating that this process may take several minutes will appear.  Press OK.
  5. A zip file called ‘CrmTranslations_<SolutionName>.zip’ will be downloaded.
  6. Extract the zip file.  You will be editing the file named CrmTranslations.xml.
  7. Open CrmTranslations.xml in Excel.  This workbook has 3 tabs: Information, Display Strings, and LocalizedLabels.  LocalizedLabels will be the tab where you’ll be doing your translations.  There will be a column per language pack provisioned.

  8. You can ignore translating rows with an EntityName of Solution or Publisher.  You should also ignore translating rows with an Entityname of RibbonCustomization, as this will not be applied properly.  To translate ribbon buttons, see the “Custom Ribbon Buttons” step later.
  9. Once completed, save the translation file.
  10. If the file was extracted from the downloaded zip file, make sure to place the updated file back into the zip.
  11. Navigate to Settings -> Solutions.
  12. On the solutions grid, select your solution and then press ‘Import Translations’.

  13. From the ‘Import Translated Text’ dialog, select the translation zip file, including your updated xml, and then press ‘Import’.

  14. Once the process is completed, you may close the dialog.
  15. Publish all customizations.

Custom Sitemap Tiles

Only custom tiles with custom titles need translations.  Note that most tiles, even ones pointing to custom entities, will automatically translate based on other translations added to the environment in a prior step (see: “Custom Entities & Fields”).

  1. Navigate to Settings -> Solutions.
  2. Create an Unmanaged Solution with ONLY the Site Map in it.
  3. You can add the site map to this solution by clicking ‘Client Extensions’ from the left navigation and select Add Existing, Site Map.

  4. Export the solution.

  5. Within the solution zip, open the Customizations XML.
  6. Note the languages node at the bottom of the file.  It should include all of the provisioned languages within your organization.

  7. For any custom title nodes, ensure there is a title node per locale id specified within the languages node.
  8. Save the XML file when finished.
  9. If the file was extracted from the downloaded zip file, make sure to place the updated file back into the zip.
  10. Navigate to Settings -> Solutions and import the solution zip back into CRM.

  11. Publish all of the customizations.

Custom Ribbon Buttons

Only custom ribbon buttons added to a ribbon need translations.  This includes the application ribbon as well, in case you’ve customized that.  Native ribbon buttons will translate through the provisioning of the associated language pack.

  1. Create an Unmanaged Solution containing all of the entities with custom ribbon buttons.  Note that if you have edited the application ribbon, you’ll want to add that by clicking ‘Client Extensions’ from the left navigation and select Add Existing, Application Ribbon.  In the example below I’ve included the native Quote entity. 
  2. Export the solution.

  3. Within the solution zip, open the Customizations XML.
  4. Search for “<LocLabels>”.
  5. Each <LocLabel> node within the XML should have a <Titles> node nested within.  Inside of each <Titles> node is a <Title> node that specifies a string, as well as a language code.  Ensure that a title node exists per provisioned language.

  6. Save the XML file when finished.
  7. If the file was extracted from the downloaded zip file, make sure to place the updated file back into the zip.
  8. Navigate to Settings -> Solutions and import the solution zip back into CRM.

  9.  Publish all customizations.

Custom Code

Custom HTML pages, javascript messages, and certain plugin messages should be translated as well.  There are various options here, but the two most common ones are:

  • Create a custom ‘Translation’ entity and add records within that entity to store a translation value, a translation key, and a locale id per language pack, per message to translate.
  • Create an xml web resource to store a translation value, a translation key, and a locale id per language pack, per message to translate.

Whichever path you choose, you can then retrieve those translations from your custom code as necessary based on the current user’s locale. Server-side, consider querying the usersettings entity for the uilanguageid and localeid. Client-side, consider leveraging the Xrm library’s Xrm.Page.context.getUserLcid().

And that’s it. While we may not excel in providing the translations themselves - though we do like to dabble in upside down question marks while buffing up on our ascii face art like so: (*¿*) - we do excel in helping you get your environment ready for them, so let us know how we can help!

Topics: Microsoft Dynamics CRM

Playing the Waiting Game

Today’s guest blogger is Melanie Waldman, a Consultant at Sonoma Partners

I was recently handed a functional spec and given the task of configuring a number of workflows. Flipping through the pages of documentation I found the following requirement.

Create a workflow that updates the opportunity priority rating.

If Status equals Open, Number of Tours is greater than 0, and Estimated Decision Date is less than 30 days from today, Set rating to A.

If Status equals Open, Likelihood to Win the Opportunity equals Very Likely, and Estimated Decision Date is more than 30 days but less than 60 days from today, Set rating to B.

If Status equals Open, Temperature equals Warm or Hot, and Estimated Decision Date is greater than 60 days away from today, Set rating to C.

As soon as I saw that all of the conditional statements involved a comparison to “Today’s date” I let out a heavy sigh. It feels like every customer I’ve ever worked with has a similar requirement and every time I open the process builder I can’t find the resources I need to fulfill their request.

We can do a lot through the use of Dynamic Values but for whatever reason Microsoft has not provided customers with a dynamic value for today’s date; so we built our own.

Using the calculated field functionality, I created a date field called Today. I set the formula to:

Today (date and time) = NOW().

After we created the field I had some reservations about whether or not the field value would update without a trigger such as opening the form, but the next morning when I checked my test records using Advanced Find, I found that all of the values in the Today field were current!

Now we had a dynamic today field that we could plug into a workflow to complete the customer’s requirement.

There is one caveat though, recalculation of the calculated field is a system process. So if you’re using the Today field on an entity with lots of records, keep in mind you’re kicking off a system job for each record, which could mean tying up a large number of resources every night at midnight. As long as resource allocation isn’t an issue for you, or until Microsoft provides us with a native dynamic value field that contains today’s date, this is a great alternative solution.

Topics: Microsoft Dynamics CRM Microsoft Dynamics CRM 2016

How Well Do You Delegate?

Today's post is written by Nick Costanzo, a Principal Consultant at Sonoma Partners.

We often hear from our clients that they need the ability to delegate visibility to records in CRM.

Unfortunately, Microsoft Dynamics does not have an out-of-the-box solution that can handle this.  Common requests include:

  • "I need to show my administrative assistant what I see."
  • "I need someone to keep an eye on my list of open activities when I'm out of the office."

There is a security privilege to Act on Behalf of Another User; but this is intended for server side code or integrations with other systems. In this blog, I’m going to provide a simple approach using native configurations to implement a Delegate Dashboard, which provides others with a view of your records so they can take action when needed.

  1. The first step is to create a self-referencing lookup field on the User entity called “Delegate.”  This is where users can select another colleague in the system to act as your delegate for a given period of time.  In this case, I’ll choose Connie as my delegate:


  2. Next you can create 3-4 views that will be used in your delegate dashboard, and the filter criteria for these views will include the condition “Owning User Delegate = Current User”. In this case, I will create the following views:

    • Delegated Leads
    • Delegated Opportunities
    • Delegated Activities

      Here is an example for the Delegated leads view:


  3.  Next, you can copy one of the existing dashboards in your system and title it, "Delegate Dashboard", or you can create a new one. Simply modify the charts and lists in this new dashboard to use the 3 new views we created above and publish the dashboard.

  4. From step 1, I’ve chosen Connie Watson as my delegate, so now Connie can see in a single dashboard the Opportunities, Leads and Activities that are owned by me. This eliminates the need for her to manually search in Advanced Find and run the risk of missing key records. *Note, if your organization has limited read/write access to these entities or the entities you’d like to include, you will need to share access as well.


  5. This approach can also now be utilized on mobile devices in the Microsoft Dynamics Apps for Tablets and Phones, giving delegates mobile access to this dashboard:


If your business requires more advanced delegation capabilities, we can always extend this framework to utilize record sharing, access teams, or custom development. The key is to understand who needs access to what data, and then we can help you build that out. Ultimately, you will be able to set a delegate and rest assured things will not get missed while you are away.

Topics: Microsoft Dynamics CRM

Inside Edition: How Sonoma Partners Uses CRM - Part 1

Today's post is written by Matt Weiler, a Principal Architect at Sonoma Partners.

Here at Sonoma Partners, we've been using Dynamics CRM to run our business since the heady days of CRM 1.0. Microsoft likes to call using the product you're selling "dogfooding", as in, eating your own dog food. We just think it's smart business.

Not only is Microsoft Dynamics CRM a good product that can work well for any business, but in working with the product ourselves, we know where it's strong and know where it might need a little bit of help. Developing for our internal system gives us practice identifying pain points in our business and thinking about how CRM can help make them go away. We don't want to just take orders, we want to really understand your business and make sure you're getting the most out of your CRM implementation.

We have a special name for our internal CRM; appropriately enough for a company named after a wine region, we call our CRM Grapevine (and we think you should brand CRM, too!).

As our business has grown and technology has changed, we've continually evaluated how we do what we do in Grapevine, and we've added, updated, and enhanced it appropriately.

One of the key benefits of CRM we've found is: you can get something basic up and running very quickly. Create a new entity, create some new fields, design some views and forms, create a process flow, a few processes, and some business logic rules to handle some simple validation, assign security, and boom, you're ready to start entering data. In many cases, that's all you'll ever need.


Think about it. If the data is entered in front of a computer, is fairly independent, and doesn't have a lot of relationships with other data; you may continue to use that setup for years to come.


But if this process is one of the core processes of our business, or if it becomes one of them over time, you'll soon discover that a completely out-of-the-box solution can no longer meet your needs.

Maybe it takes too long to fill out the form because there are a lot of lookups, maybe the data is commonly entered while on the road and the mobile app doesn't have a great interface for entering the data, or maybe the data needs to be combined with data from additional non-CRM sources to really give an overall view.

For any of these issues, the solution can be found in  simple updates in CRM, a new user interface, a new website, a new mobile app, or some combination of all those things.

In this series of blog posts, I'll be showing you some of the core processes at Sonoma Partners that live in or interact with Grapevine. In all the processes I'll be highlighting, we started with a very basic implementation and over time we enhanced it to make it easier, or to meet our changing business needs. For some of you working with or evaluating CRM, this may give you some ideas on how CRM can be used with your business; whether you're a professional services firm like us, or you work in any other industry.

I'm really hoping you'll get a little bit of the perspective that I've gained over my 9+ years of working with CRM: it's a living, evolving system, and based on your business, your clients, technology, and a host of other factors.

CRM needs to be analyzed continuously and updated to make sure it's doing what it's meant to do: make it easier to run your business.

How to get executives to pay attention to CRM


Topics: CRM Best Practices Microsoft Dynamics CRM

Fiddler HTTPS Error


Today's post is written by Matt Dearing, Development Principal at Sonoma Partners.

Fiddler is an amazing tool for web developers to monitor web traffic, edit and replay requests on the fly, and much, much more.

One of the best features of Fiddler is decrypting HTTPS traffic so it can be viewed, edited, and replayed right within Fiddler. For this to work, Fiddler employs a “man in the middle” approach between the client and server acting as a proxy. When the client makes requests, Fiddler dynamically generates SSL certificates with the name of the target. Normally, these certificates would not be trusted by the client making the requests; but Fiddler installs a root certificate when you enable capturing and decrypting HTTPS traffic.

(NOTE: Fiddler warns you should only install the Fiddler Root certificate on test machines). If you browse an HTTPS website with Fiddler running, and configured to decrypt HTTPS traffic, you’ll see the following when viewing the certificate:



We recently had a developer experience an issue where while Fiddler was running they were getting the following error when making HTTPS calls programmatically:

The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.

And the following when browsing HTTPS websites:


Checking the certificate showed:



Fiddler was configured to decrypt HTTPS traffic and had been working fine previously. This issue can be caused by Fiddler trying to act as a proxy for HTTPS traffic, as described above, without its root certificate being installed, or there being an issue with the root certificate. Correcting this issue is as simple as removing the Fiddler root certificate and then re-adding it via the following steps:

  1. From Tools->Fiddler Options->HTTPS (tab) uncheck “Capture HTTPS connects”


  2. Click the “Actions” button and select “Remove Interception Certificates”. Click through the corresponding dialogs confirming your request.


  3. Re-check “Capture HTTPS connects” and “Decrypt HTTPS traffic”. Click through the corresponding dialogs to confirm your request and install and trust the new certificate.

This gave the developer a new Fiddler root certificate which once again allowed them to make HTTPS requests and browse HTTPS websites all while fiddler was running so they could monitor the requests and responses.

3 Key Reasons to Integrate CRM and ERP

Today's post is written by Matt Baker, Practice Director at Sonoma Partners.

Businesses often choose to employ multiple systems to ensure that processes run as efficiently as possible. More times than not, these systems include a Customer Relationship Management solution (CRM) and an Enterprise Resource Planning solution (ERP). Your ERP system provides your key stakeholders with much needed internal information, while your CRM system creates the entry point for customer engagement.

Without a clear CRM and ERP integration strategy, your organization may not be realizing it's full potential in the marketplace.  

In our experience, we've seen 85% of our net new implementations begin with some type of integration between CRM and ERP, and close to 100% of our implementations have some sort of long-term integration plan. 

There are three key reasons for integrating CRM and ERP:

  1. Efficiency: Resulting in reduced process steps
  2. Usability: True 360-degree view of the customer in one solution
  3. Data Quality: Clean accurate data and reduced errors when inputting data

In order to successfully integrate your CRM solution with your ERP solution, you need to be able to identify a clear ERP integration strategy. Here are a few questions you need to ask yourself as you start to build this strategy:

Is integration needed?

Most companies do not start with a clean slate when implementing CRM as there is usually a significant legacy factor. The majority of organizations have pieced their business applications together over time and through acquisitions. This usually yields a business application portfolio that does not support the business goals, requirements, or processes. An integration strategy is crucial, as the ERP solution is the backbone of a business's operations and the primary system-of-record.

How will this benefit the end user?

In order for these types of integrations to work, everyone involved has to recognize a measurable benefit. If it currently takes a sales rep 5 emails and 4 phone calls to get an order status; you can reduce that activity time to under a minute by implementing a CRM system. That improved efficiency is an example of a big win.

How does this affect control of data?

Most financial teams cringe at the idea of their ERP financial data being displayed in CRM. They worry about how the data might be manipulated or changed. Remember that ERP is the system-of-record for this type of information, and fears can be eliminated by doing a one-way sync into CRM.

How do you assign process ownership?

You don't want to put everything in both systems; you want to use each system for what it is best suited for. For example, Product Information should be mastered within ERP. Contact information should be mastered within CRM.

The above questions are just a few of those you will need to examine as you define your ERP to CRM Integration Strategy.  These questions will continue to evolve as your business changes. Contact Sonoma Partners today to find out more information on how we can help you successfully integrate your ERP and CRM solutions. 

How to get executives to pay attention to CRM


Topics: CRM for Manufacturing

5 Creative Solutions for CRM

Today's post is written by Brian Kasic, a Principal Consultant at Sonoma Partners.

What do companies tracking their customer’s golf ball preferences, private jets, and cleanliness of keg lines have in common? They have all used a CRM system to solve their real world business problems.

When most people think of CRM, they “drink” the COLA and use the core entities: contacts, opportunities, leads and accounts (COLA).

This is a very effective use of a CRM system and works well for the vast majority. But for a moment, let’s expand our use of CRM beyond the common COLA and get the creative juices flowing by asking the question, “What are the most unique business problems that have been solved with a CRM system?”

When we asked consultants at Sonoma Partners this question, we heard a lot of intriguing answers. At Sonoma Partners, we appreciate creative solutions that solve real business problems. Each solution we have identified has generated time savings, created more opportunities and higher profitability for companies.

Here are 5 of the most creative solutions we've seen:

  1. Capture the expiration dates and line cleanliness at your favorite watering holes.
  2. Keep an inventory of your company's private jets, yachts, and cars.
  3. Note your favorite golf ball so that you have Titleist ProV1s at all events.
  4. Track “Fun Facts” about your employees and play trivia with them at company meetings.
  5. Record food preferences to ensure that food orders for meetings include everyone's preferences.

Honorable mentions include:

  • Track who is responsible for signing each of your holiday cards.
  • Capture who is attending an event with pictures and profiles.
  • Compare customer survey results over time.
  • Manage project planning, budget, expense reporting, and weekly status
  • Document legal contracts renewal clauses, terms and conditions.

As you can see, there is a lot more to drink up in CRM systems than COLA. As your business gets a taste for these types of creative solutions, you’ll discover that uniqueness and usability become differentiating factors in the success of your system. The more creative you become, the more intriguing, engaging and appealing the solution becomes to your end users.  So don’t be afraid to live a little by ordering up that fancy cocktail - CRM style.

Are you interested in brainstorming some unique solutions for your CRM platform? Contact us to get the conversation rolling!

How to get executives to pay attention to CRM


Topics: CRM Best Practices

Dynamics CRM - Surfacing the Right Business Process Flow

Today's post is written by Trent Bell, a Principal Consultant at Sonoma Partners.

When Microsoft Dynamics CRM 2013 was released, it introduced business process flows for any entity including custom entities. Business process flows (BPF’s) can be a powerful piece of functionality to help guide end users through sequential processes without introducing too much rigor. With that said, it is important to know how to setup BPF’s to surface for the appropriate users. For this post, my screenshots are from a trial version of Dynamics CRM Online which should be equivalent to MS Dynamics CRM 2016 on-premises.

Important things to know about BPF’s:

  1. They must be activated
  2. They must be enabled for security roles
  3. They are part of an order of other processes on the same entity

Security Role Enablement

BPF’s can only surface to a user if the user has a security role that is enabled for that specific BPF.  This is pretty straight forward, but is critical to your overall BPF strategy if you happen to have many BPF’s per entity, and many security roles and/or user groups to manage.

An administrator enables security roles on a BPF by going into the configuration settings, choosing “Processes”, and then clicking into the relevant BPF process.

Once in the details of the BPF, one can enable the security roles via the button in the top navigation menu (see below).

Blog 1

In the “Enable Security Roles…” window, you will notice a couple radio buttons to toggle between “Enable for Everyone”, and “Enable only for the selected security roles”. As you might expect, choosing the first option will enable the BPF for all security roles. If you choose the second option, you will have to select the relevant security role(s) for which you would like the BPF enabled.

Blog 2

Order Process Flow

So, what if there are multiple BPF’s enabled for the same security role, or what if there are multiple security roles that have the same BPF enabled? 

For example, what if “User A” has security role “S1” and “S2” and “BPF1” in enabled for “S1” and “BPF2” is enabled for “S2”?  How will Dynamics CRM know which BPF to surface to “User A”?

The answer to this question lies with the “Order Process Flow” functionality. From any BPF, you can access and alter the “Order Process Flow” from the top menu (see screenshot below).

Blog 3

After clicking on it, the “Process Flow Order” is displayed, allowing a system administrator to re-order the relevant BPF’s by highlighting a BPF and using the green arrows. For example, if I want to move the “Opty Test 1” BPF down, I simply highlight it and use the down arrow to move it (as seen in the below screenshots).

Blog 4

Blog 5

Now that we have re-ordered our BPF’s, what did that do and why is it important?  The BPF that is listed first will be the default BPF to be surfaced/used when our situation with “User A” takes place. It is also important to note that this will be the BPF used when creating a new record as well.

Switch Process

Another feature to note that is related to the topic of business process flows in Dynamics CRM is the “Switch Process” button. This button will appear when viewing a record by a user who is able to see multiple BPF’s for that entity. This user can click on the “Switch Process” button and choose to apply a different process to the record (note: only one BPF can be applied to a specific record).

Blog 6

Blog 7

Whenever someone switches processes, the current process stage will be set to the first stage of the newly applied BPF.

When creating a NEW Opportunity, the user does NOT have the ability to switch processes (BPF’s) until the record is saved for the first time.  As you can see from the screenshot below, the menu option to “Switch Process” does not exist. 

Blog 8

As briefly mentioned above, this means you only have one way to dictate which BPF surface, and this is by the “Process Flow Order”.

In summary, business process flows are a powerful piece of functionality provided by Microsoft Dynamics CRM, and should be configured with some forethought into all user groups who might touch that relevant entity.  If need be, Sonoma Partners can help you work through this as part of your overall CRM solution strategy. Contact us to learn more.

Dynabacus the Microsoft Dynamics CRM Record Count Tool

Topics: Microsoft Dynamics CRM Microsoft Dynamics CRM 2016