CRM Online Spring 2015 – OneNote Integration

Posted by on April 15, 2015  |  commentsComments (0)

Microsoft recently announced the CRM Online Spring Release ‘15 and subsequently lifted the NDA around the release and therefore it’s time to start posting about all the great new features coming!

This post will cover the new OneNote Integration feature that Microsoft is rolling out.

How it Works

Now with the new release, there will be a new OneNote tab that’s part of the activity Social Pane (posts / activities / notes / OneNote).  This functionality isn’t limited to only the web, but is also available on the Phone and Tablet clients as well.


A few key features and benefits of the OneNote integrate with CRM are:

  • You can take photos, record voice, manage to-dos, preserve HTML & hyperlinks, use handwriting, have tables, embedded Excel docs, etc.
  • Uses the native CRM Security Model for access
  • Allows version history
  • When performing a search, it actually searches the content of the note, and not just the title like traditional notes
  • Stores notes in SharePoint not in CRM Database
  • Each record in CRM has a dedicated notebook in SharePoint
  • SharePoint Notebook name = CRM Record name
  • Each notebook can have multiple sections with multiple pages
  • All users share the same notebook
  • Web Client: opens OneNote Online in a separate tab
  • Tablet Client in Windows: opens OneNote app in the side-by-side experience with CRM
  • Phone Client: opens OneNote App
  • Notebook can be auto created when OneNote tab clicked (in the Web Client only)
  • Navigate to OneNote to add new notes

Best Practices

There are some best practices that you should be aware of if you’re interested in using the OneNote integration with CRM.

  • Pin notes on your device.
  • Use side-by-side experience for windows
  • Take notes quickly using Quick Notes and move to page later
  • Close notebook when not using it to save OneNote performance and search results

Setup and Requirements

The OneNote integration currently is only available for CRM Online.  Also, you must have the SharePoint integration enabled as the OneNote notebooks are stored in SharePoint.

You need to enable the SharePoint integration (Document Management) for the specific entities that you’re interested in storing OneNote documents for.  Once you enable this on the entity definition, you then have to go into the OneNote Integration settings area, and enable OneNote for those entities.  The list of entities that appear in the OneNote Integration settings are those entities which have SharePoint enabled.

Note that the OneNote integration can also be enabled from the entity itself once Document Management is enabled.  So you can go to a global area to see all the entities where OneNote is enabled, or you can do it from a single specific entity.




Chatter Licenses and Record Type Defaults

Posted by on April 13, 2015  |  commentsComments (0)

I recently ran across something odd the other day that took a bit of investigation to figure out: if you have record types enabled for an object, and you also have chatter enabled, when you go to delete an old record type you no longer need you may not be able to. Let’s say I have an ‘Original’ record type defined for my Account object that I want to remove. To remove it I would go to Setup > Customize > Accounts > Record Types > Edit Original > Deactivate. Once deactivated, I could delete it. However, if Original was the first record type I had created and I set it to the default record type for all profiles before enabling chatter, I would receive the “This record type cannot be deactivated because the following profiles use this record type as default.” error message:


Normally this would be no problem, as we could just go in to the offending profile (Marketing User for example), scroll to the Record Type Settings section and click Edit next to the Account record type to choose a new default:



However, if we try to do this with one of the Chatter External or Chatter Free profiles, we find there is no record type section!


This is unfortunate, since it means there is no native way to change the default record type for these profiles.

Working around the problem

Warning: the work around below is undocumented and technically unsupported, use at your own risk.

After doing a bit of searching, I found this idea on the IdeaExchange which deals with this shortcoming specifically. (You should up vote it so we don’t have to do work arounds anymore). In the same idea, someone else posted a work around which involves manipulating the URL to be taken to a native page which will let you set the default record type. The url has the form:


The instance is the instance your organization is on (na1, eu1, cs1, etc.) and you can get it from the url in your bar:


If you have My Domain enabled, you can use your domain name in its place.


The profile id is the id of the profile you want to edit the default record type for. You can get this by navigating to the details of the profile in the setup menu and grabbing the ID from the url:



This part is a little trickier, and how it works depends on if you’re using a native object or a custom one.

Native Objects

For native objects, object name is just the API name of the object. For example, for Accounts it would just be Account.

Custom Objects

For custom objects, object name is actually the id of the custom object. You can get this by going to the setup details for the object (Setup > Create > Objects > (your object)) and grabbing the id from the URL:


Once you have constructed the url, enter it in to your browser to be taken to the same type of page as you get for the other profiles:


Switch the record types around and set the default as needed, then click save. Repeat as necessary for any other profiles you cannot edit natively.

Once this is done, you will be able to disable and delete the offending record type.

If you have any questions feel free to leave us a comment below or contact us.

CRM Online Spring 2015 – Office Groups Integration

Posted by on April 8, 2015  |  commentsComments (0)

Microsoft recently announced the CRM Online Spring Release ‘15 and subsequently lifted the NDA around the release and therefore it’s time to start posting about all the great new features coming!

This post will cover the new Office Groups Integration feature that Microsoft is rolling out.

Office Groups

First off let’s discuss what Office Groups are.   Office Groups are a new space to collaborate with a group of O365 users.  These don’t have to be CRM Users, but instead just users of O365.

With Office Groups, you easily indicate what content from different Office products should be shared with other O365 users.  This can be content from Outlook, OneNote, OneDrive. 

To be more specific, the following content can be shared from these Office products:

  • Outlook:
    • Calendar (Outlook Appointments)
    • Conversations (Outlook Emails)
  • OneNote:  Notebooks
  • OneDrive:  Documents

CRM Integration

Now that we know the basics of what Office Groups are, how does it integrate with Dynamics CRM? 

For each CRM record identified to have an Office Group created, an Office Group will be created behind the scenes for that record.  The CRM Record Name will become the Office Group Name.

Then, on the CRM record form itself, there will be a tab “Items Shared with Group”


This tab will allow you to collaborate with non-CRM users who are O365 users.  On this tab you’ll be able to:

  • See across the various office products (Outlook, OneNote, etc.) items shared to the specific office group
  • See Yammer like conversations for emails
  • For Opps Only, adding people to the Sales Team will automatically add the person to the O365 group


Currently this is a solution that’s available on the O365 Admin portal. In order to take advantage of this functionality, you’ll need to download and import this solution to your CRM organization.

Once the solution is imported, it’s as simple as typing in the entity name that you want to enable Office Groups for, and then also indicate if you want an Office Group automatically created for new records that are created of that entity type.

A new Security Role is provided in the solution that you’ll have to assign out to your users to take part in this new functionality.  This role provides access to create/view the Office Group entities that are provided in the solution.



Currently this functionality is only available on CRM Online and Office Online.  I can see down the road this being applied to CRM On Prem, and Office On Prem so that users could have a hybrid of CRM and Office solutions and still take advantage of this functionality.

Also, the functionality of Office Group emails on the record form are very similar to Yammer.  There may be an opportunity here for the Yammer and Office Group teams to talk and consolidate products.

Finally, the functionality to have people automatically added to the O365 group from the Opportunity Sales Team, would be beneficial to have extended to other entities and not just Opportunities

So when would you use this new Office Group functionality?  When you need widespread collaboration for people that are internal that don’t have access to CRM with those that do have access to CRM

New Login Pools coming to Japan

Posted by on April 8, 2015  |  commentsComments (0)

We at Sonoma believe user experience is one of the key drivers towards user adoptions of your CRM platform. We also understand the pain that users face when a system they expect to be working suddenly becomes unavailable or unresponsive. Because of this, when we recently received communication from Salesforce about a new login pool coming to Japan, we felt it  important to do our part to help the message reach as many people as possible. We are glad that Salesforce is continuing to invest in their infrastructure, improving resiliency, and we also want to help ensure that everyone is able to make changes as needed to prevent any down time.

Below is the body of the communication sent by Salesforce, please read it carefully to determine if any action needs to be taken in your organization. If you have any questions, always feel free to contact us and we can help determine your best course of action.

At Salesforce, trust is our top priority and we’re working to improve your login performance, regardless of which instance you’re logging in from.

Last year, we further improved the resiliency of our infrastructure by adding additional login pools to our midwest and east coast data centers. On April 11, 2015, we are adding a login pool in Tokyo, so if your end users are accessing Salesforce from the APAC region, they will authenticate via the new login pool in Tokyo, thus reducing the time it takes to login.

In order to take advantage of this improvement to the login experience, please take the actions below to prepare your organization.

If you do not take action, your end users may not be able to log in, and your inbound integrations may stop working starting on April 11, 2015.

What does this mean to me?
Login pools only affect you if both of the following apply:

1. Your end users or inbound traffic integrations use to access your production instance.
2. Your IT department has set up your corporate network settings (ie. proxy settings or firewalls, etc.) to restrict access to only certain Salesforce data centers or instances (ie. whitelisting certain IP addresses or ranges, hard-coding references to your specific instance, etc). Please note: This is not done in the Salesforce app, but in your corporate IT network settings.

If both of the above criteria do not apply to you, then you do not need to take action to prepare for the additional login pools.

What action do I need to take?
If your IT department has set up your corporate network settings to restrict access to only certain Salesforce data centers or instances, you will need to update your corporate network settings to allow access to all Salesforce data centers.

If your IT department currently restricts access by certain IP addresses or ranges, please refer them to the the full list of Salesforce IP ranges available in the What Saleforce IP ranges should I whitelist? Knowledge article.* If you would like to confirm that your corporate network settings are prepared for login pools, please see the How to Prepare for Additional Login Pools Knowledge article referenced below. Please note: You will need to allow access to all of the ranges for every data center, regardless of where your instance resides.

*For security purposes, you will need to login with your Salesforce credentials to view the list of IP ranges.

What if I do not update my IP ranges to include all Salesforce data centers?
If you do not update your corporate network settings to allow access to all Salesforce data centers, and your end users and integrations reference, your end users may not be able to log in and your inbound integrations may stop working starting on April 11, 2015.

When is this change taking effect?
We’re adding a login pool to the Tokyo data center on April 11, 2015. Please check for further updates.

What are login pools?
Login pools process all login requests when end users or inbound-traffic integrations attempt to access the Salesforce app. Once enabled, end users and integrations will be sent to one of our login pools across our data centers, which then verifies credentials and forwards to the appropriate instance.

Why am I receiving this information?
As an administrator of a Salesforce org, if you have end users with multi-national internet entry points, then you should whitelist all IP ranges. This includes remote offices and end users trying to access Salesforce while traveling. (For example, if you have an employee traveling to the APAC region and you do not whitelist the IP ranges as outlined in the What Saleforce IP ranges should I whitelist? Knowledge article, the employee would not be able to log in as our login pools would not be able to process their authentication due to whitelist blocking.)

Where do I get more information?
To help answer your questions, we have prepared this How to Prepare for Additional Login Pools Knowledge article & FAQs.

To learn more about this maintenance and how it will impact you, watch this recording of the New Tokyo login pools webinar:

You can also reach out to Customer Support by logging a case via the Help & Training portal.

CRM Online Spring Release ‘15 - Theming

Posted by on April 6, 2015  |  commentsComments (0)

Theming is a brand new feature coming in the Spring Release ‘15 which has been requested by many organizations for many years now. Themes can be created to change the colors of certain UI elements as well as add a logo to the navigation bar. Multiple themes can be created which is managed through a view in Settings –> Customizations as shown below.

theme grid

When opening a theme record, you will see a variety of options for UI elements as well as the navigation logo and colors. The logo is a Lookup to a web resource image and can have a custom tooltip for when a user hovers over the logo.

Theme form

Below is a custom theme in action with a custom Excel logo. As you can see the navigation bar, grid row selection and even the Command Bar buttons can all be customized.

ribbon theme

Here is what a record form can look like with a custom theme. Header fields and Business Process Flow links can be customized as well.

Process Flow theme

Themes can be built brand new or there is an ability to clone an existing theme and make changes. They can also be previewed before publishing to all users. Unfortunately themes are not solution aware at this time but can be exported and imported into a new environment using native record export / import.

Besides branding your CRM system, theming can also come in handy when trying to distinguish your many different environments from DEV to QA to PROD by creating unique themes for each environment.

Happy Theming!

CRM Online Spring 2015 – USD and Parature KM

Posted by on April 3, 2015  |  commentsComments (3)

Microsoft recently announced the CRM Online Spring Release ‘15 and subsequently lifted the NDA around the release and therefore it’s time to start posting about all the great new features coming!

This post will cover the changes coming to Unified Service Desk around Parature Knowledge Management.

USD and Parature KM

First off are the changes that are coming to USD regarding Parature Knowledge Management. 

Users can now perform actions / automations around the Knowledge Base such as Copy Link, Send Email, Link/Unlink KB Article, Browse web pages, etc. within USD sessions.

Also, the KB Search Panel is now independent, and not tied to an entity form.  Previously you could only perform a KB search when on a specific record / form.  The KB Search Panel can be displayed in different layouts / areas of USD (right panel, pop out, etc.).  This provides a much richer experience with multiple applications and session management for the USD Agents.


USD Technical Updates

There were also a bunch of technical updates applied to USD and what actions/controls are available for use. 

  • A new type of Hosted Control was added for the KM integration (KM Control)
    • Inbuilt Actions:  Search, SetArticleContext, Associate, Disassociate, SetSearchProps
    • Associated Events:  ResultOpen, SelectionChange, SearchComplete
  • Navigate() action now supports Post-Method for Web applications
  • New Actions:
    • SetVisualProperty (automate visual properties such as height, width, color, and background)
    • CopytoClipboard (allow copy/append text data to the system clipboard)
  • New Panel RightPopUpPanel gives an option to display article previews

USD and Parature KM Setup and Install

To install and setup the new functionality for USD and Parature KM, the Package Deployer can be used to deploy all the components needed for the core User Interface Integration (UII) and USD solutions along with sample data to CRM.


Then when in CRM, navigate to Settings –> Service Management –> Setup Knowledge Base Management to setup the record types you want KB management on.  You can also configure your Parature connection details from this location as well.


Finally, you need to configure your Parature KM Hosted Control and you should be set to go!


CRM Online Spring Release ‘15 – Navigation Enhancements

Posted by on April 1, 2015  |  commentsComments (0)

Microsoft recently announced the CRM Online Spring Release ‘15 and subsequently lifted the NDA around the release so we can now blog about all the great new features coming!

This post will cover the feature we’re most excited for in the Spring Release – Navigation enhancements.

New Navigation Bar Shelf

One of the biggest complaints about CRM 2013 / 2015 is that the main navigation was much worse than its predecessors.  Users weren’t able to see many entries at once which required them to scroll horizontally for a long time to find the area of the site map they’re trying to navigate to.  While this was a pain for all users, it was even more painful for those users who had hundreds of sitemap entries, and trust us, we have customers who fall in that camp.  Countless partners and customers started creating their own custom solutions to be able to see more entries at once.

If you’re familiar with the navigation in Dynamics Marketing then you will recognize the new navigation bar that is coming with the Spring Release ‘15. We’re very excited for the new navigation bar as it now provides the ability to see a lot more sub areas on a single screen instead of having to scroll for days if your organization has a lot of entities. Now when you hover over a main tile like Sales, a new shelf will drop down to display a lot more sub sections and links as shown below.



Microsoft is once again listening to the community and adding back features that were in past CRM’s but removed from 2013 (similar to Advanced Find in the global navigation bar). Now Microsoft is adding back the MRU (most recently used) functionality.  An MRU icon was added to the navigation bar to the left of the Quick Create icon that will show you a list of your most recent views and recent records as shown below.



Once inside the MRU pane, you can hover over a recent record and click the pin icon to pin that record to the top of the list so it is always visible and easily accessible.


Quick Create

The Quick Create pane was also updated to be a consistent look and feel. It now has the same pane as the new navigation and lists the entities in a vertical manner to be able to show more entities on a single screen without having to scroll horizontally.

quick create

Form Navigation

A new icon was added to the right of the record name which displays a list of tabs on the form. Clicking a tab name will navigate directly to that tab on the form. This makes it easier to navigate taller forms.  It’s also a great way to quickly navigate back to a tab of the main form if you’re currently viewing a related Associated Grid of the main record.  Previously in 2013 and 2015, once you navigate to a related Associated Grid, you’d have to go back to the top tab of the form, then scroll down to the tab you’re interested in.

form navigation

As stated earlier, we are super excited for these enhancements as they have been highly requested for awhile! The one downside is you can only get your hands on it this Spring if you are on CRM Online.  On-premise customers will unfortunately have to wait a bit longer until Fall 2015.

4 Reasons to Stop Investing in a Homegrown CRM System

Posted by on March 30, 2015  |  commentsComments (0)

CRM for Professional Services
For the most part, homegrown things are great. We can get behind homegrown vegetables, flowers, and craft beer. But your homegrown CRM system? That’s another story. For professional services firms in accounting, consulting, legal and AEC, CRM systems are the lifeblood of building relationships and service dollars. And if you want to keep your staff and customers happy, maybe you should start shopping for a CRM that is enterprise-grade, instead of wasting money and manpower on a homegrown CRM system that’s sub-par. Here are 4 reasons why:

1. Homegrown CRM systems don't come with free stuff or shiny new toys 

Whether you purchase or Microsoft Dynamics CRM, by virtue of the platform alone you get access to the tools, functionality, and integrations your team needs. Whether it's reporting, mobile apps, forecasting, user authentication, or especially integrations with tools you use, need and love; incorporating these features into a homegrown CRM system (and maintaining said integrations) would come at an exorbitant cost (and still wouldn’t work as well). Name brand CRM solutions not only give you all this for free, but also constantly deliver new innovations. Both and Microsoft Dynamics CRM release regular updates 2-3 times a year, and you don't have to do a thing to reap the benefits.

With either platform you never have to build the mobile app or Outlook integration your users clamored for and you constantly get great new things like OneNote integration. A lot of professional services firm use OneNote (and who wouldn't, it's a great tool!) and for Microsoft Dynamics CRM users, no one had to ask for an integration between the two tools: Microsoft built and delivered the ability for OneNote to sync to CRM out of the box. If you wanted to integrate OneNote with your homegrown CRM, it would cost an untold amount of money (and might not even be legal). A huge benefit of buying a CRM, rather than building one, is you get access to the shiny new toys (and tried and true programs) your users will love.

2. Homegrown CRM systems aren't user-friendly

Let me say this another way: a lot of homegrown CRM systems are ugly. And clunky. And your people don't want to use tools that are ugly and clunky. So if supporting user adoption is part of your CRM initiative (which it absolutely should be) good luck getting your team to regularly use a system that is as painful to look at as it is to use. Microsoft Dynamics CRM and both have teams of UX designers for precisely this reason: CRM solutions must be visually appealing to be appealing.

3. Homegrown CRM systems are difficult to maintain

A majority of the homegrown CRMs we get a glimpse of were built 10-20 years ago, exist on-prem, and look like Microsoft Office applications from the late 90s, or worse, are green screens that only very technical people can touch. All of these factors (and trust us, there are plenty of others) contribute to the fact that homegrown CRM systems can be extremely difficult to maintain. And that's if you hold on to the employee that can maintain them.

Does this sound familiar? "Yeah, we had a guy here in the early 2000's that built our system but he left 5 years ago. No one on staff understands the system, no one can update it, and it's just sitting on our server untouched." Like we said, maintainability is a big issue for homegrown CRM systems. 

4. Homegrown CRM systems make customizations painful

Assuming you are one of the fortunate few who have been able to keep their homegrown CRM guru on staff for the past two decades and he/she knows every in and out of the system, this doesn't mean that making changes is easy to do. When it's entirely custom, your CRM expert is likely using duct tape, spit, and prayers to make the system do what you want it to do. On the other hand, and Microsoft Dynamics CRM allow you to make changes to the system with simple point-and-click, drag-and-drop configurations that require a Business Analyst skillset, not a developer coding away.

If you need someone more technical to make changes, there are plenty of developers you can hire on either platform to work in-house at your firm or as a consultant. and Microsoft Dynamics CRM also have lots of great partners (like Sonoma Partners *ahem!*) who are very well-versed on the platform, have solved similar problems to yours countless times before, and have helpful tools and tricks to make selecting, switching to, upgrading, and maintaining or Microsoft Dynamics CRM easier and more cost effective than doing so with internal resources.

Want to learn more about enterprise-grade CRM systems? We're all ears (and solutions)

New Call-to-action

Metablasting Dynamics CRM 2015

Posted by on March 27, 2015  |  commentsComments (0)

Today’s post is courtesy of Srilekha Keshava, a Developer at Sonoma Partners.

In the previous post, we have discussed in detail about Sonoma Partners Metablast utility and the benefits of using the tool to generate an entity schema. Today, we are pleased to announce that Metablast has been updated for Microsoft Dynamics CRM 2015. Download the free utility!

Updating Metablast for Dynamics CRM 2015 required only a slight rework, namely matching the latest .NET Framework 4.5.2 to match CRM 2015 compatibility. The UI, connection information, and output remains the same.


As a reminder, once the organization is selected, Metablast displays the list of entities that are available to generate the schema.


A .CSV file with the schema of the selected entities is created.


Field Name


Entity Display Name

Display name of the entity

Entity Name

Logical/Schema name of an entity

Display Name

Field display name


Logical name of the field


A short description of the field


Type of field (Example: Option Set, Single Line of Text, etc.)

Is Custom

Is the field Custom or Native

Requirement Level

Is the field Optional, Recommended or Required

Audit Enabled

Enable/Disable audits

Security Enabled

Enable/Disable security


Is the field Readable


Is the field Creatable


Is the field Editable

On A Form

Is available on the form


Related target Entity for a Lookup field

Relationship Name

Relationship used for a lookup field

Options: Value

Option Set values if Type is Option Set

Max Length/Max Value

Maximum length/value of the field

Min Value

Minimum length/value of the field


Precision Value if Type is decimal

Note: When Metablast is ran against multiple entities, a single CSV file with schemas for the selected entities will be generated.

Form Record Navigation in CRM 2015

Posted by on March 24, 2015  |  commentsComments (0)

If you’re like us at Sonoma Partners, and have upgraded to CRM 2015 already, you’re also getting used to the different UI of 2013/2015 compared to 2011.

I may be one of the odd ones where I enjoyed 2011 opening each link in a separate tab (I changed my IE settings to open in a tab, versus a new window).  This way I could multi-task and have many different tabs for different records that I was working with.

However, in order to get this functionality with CRM 2013/2015, I now resort to right clicking in a list/grid, and selecting “Open in a New Window” and now I’m back to the navigation that I’m used to.


However, doing this comes with a price of losing some other functionality.  Another great CRM feature is the previous/next navigation arrows on a record form to navigate quickly between records from the view you came from.

However, if you right click and open your new record in a separate window/tab as I did above, these arrows don’t appear.  If you navigate the way 2015 was built (double clicking a row and having it open in the current window/tab), then these arrows appear.

Just something to be aware of as you choose your own adventure for how to navigate around CRM 2015.



Convergence 2015 Keynote Recap

Posted by on March 23, 2015  |  commentsComments (0)

Microsoft’s Convergence was last week and we’re recovering from a long and exciting week in Atlanta but we wanted to share with the community some of the hot topics being talked about in the Dynamics community.

The focus of this year’s Convergence keynote was how Microsoft empowers people, industries and organizations to achieve more. Satya Nadella and Kirill Tatarinov took the stage separately to talk about how Microsoft technologies work together to help transform businesses and while doing so, they announced a handful of new tools.

Power BI

Power BI is a cloud service that leverages Excel to provide shareable analytics through reports and dashboards. Power BI is now available in the U.S. and more than 140 markets around the world. The following data sources are coming soon – Google Analytics, Microsoft Dynamics Marketing, Zuora, Acumatica and Twilio.


Office Delve

Delve is a new tool which surfaces content from email and social feeds within Office 365. It uses machine learning to highlight information that is relevant based on your work and your colleagues. Delve can surface content from Yammer as well as Exchange Online. It was announced during the keynote that Delve is now globally available.


Skype for Business

Lync has been rebranded as Skype for Business and can now leverage all your Skype contacts. It was announced in the keynote that the technical preview starts today. The full version will be available starting in April.



Microsoft Dynamics CRM was finally discussed towards the end of the keynote when Julia White came out to unveil the new Spring ‘15 Release.

InsideSales Predictive Intelligence

Julia announced and did a demo of Dynamics CRM integration with’s Predictive Intelligence which helps sales users determine which lead they should be focused on right now by displaying the Neural Score and Contactability front and center on the Lead form.


OneNote Integration

On the Activity Feed for a record there is a new link for OneNote which lists all the related OneNote entries for the current record.


When a OneNote entry is clicked on, it navigates right to the note in OneNote Online which can then be edited directly in OneNote. This feature is exciting for us as a lot of CRM users use OneNote as well. It provides a better rich-text experience versus the standard text box that CRM provides with native notes.


Suggested Items

On the product line items for an Opportunity, there is a “Suggestions” link in each row which will display a list of related products so that they can be easily added to the Opportunity as well with a single click. This feature comes in handy for cross selling or when you’re selling a product that has a lot of related accessories.



With a Windows Phone device, Cortana can now be used to open records through voice commands. Julia said the command “CRM open opportunity called Trek 3D printer upgrade” which then proceeded to open the specific opportunity record in the MoCA app for Windows Phone without any hiccups! I’m still skeptical of how well the voice commands will work but it looks very promising based on her demo and I’m excited to see what else can be done with Cortana and CRM in the future.




Outlook 2016

Julia briefly showed off the new Outlook 2016 and announced the release of IT Professional and Developer Preview of Office 2016. Attaching a file will now display the most recently used documents. There are also new attachment options so you can use a link to OneDrive or the standard inline attachment. The release version of Office 2016 is expected to be available in the second half of this year.



Surface Hub

Lastly, Julia showed off the new Surface Hub on a 84” HD 4k touch sensor screen with WiFi, speakers, microphones and cameras. It supports two-way integration so the content can be manipulated from either the Surface Hub or individual devices that are connected to the Hub and it looked pretty smooth and slick! The Surface Hub website notes that it is coming later this year.



Unfortunately we were hoping for some more stage time for Dynamics CRM but the features that were shown from the Spring ‘15 release look very promising. Now that the NDA is lifted on the Spring release, we will be covering the new features over the next few weeks so check back in the near future!

5 Benefits of Integrating CRM and ERP Systems for Manufacturing Firms

Posted by on March 11, 2015  |  commentsComments (0)


Whether you're operating in wholesale and distribution, life sciences, or industrial manufacturing; you're well aware that today's global economy and technology explosion have created a hyper-competitive operating environment for manufacturing firms.  In order to help your company improve the efficiency of your business processes so you can compete, you've implemented an Enterprise Resource Planning (ERP) tool. Whether it's JD Edwards, SAP or Oracle that you're using, your ERP system allows you to get a real-time view of your entire enterprise. But what about a real-time view of your customer? Have you invested in a CRM system that gives you a comprehensive understanding of who your customer is and what they're purchasing? There are two very important sides of the profitability coin: the business and the buyer; the tools your company uses should address both. When properly integrated, manufacturing firms can experience major benefits from the marriage of CRM and ERP.

1. Consolidated Sales Processe

One specific challenge that manufacturing firms face is supporting two modes of selling: a direct sales team and a distribution channel. Not only are you focused on appealing to your distributors so they push your product, you're managing your direct sales team and their relationships with your clients. So what happens when your direct sales team goes head-to-head with your distributor on the same project? Are you even aware of the overlap before it's too late? A well-implemented CRM system is flexible enough to support the two different modes of selling and get your teams the information they need to ensure you aren't engaging yourself in a bidding war.

2. Increased Visibility and Improved Forecasting

In our experience, we've found that a majority of sellers don't have access to their ERP systems. This is a problem! If you don't have a CRM system and you're storing valuable client and product information that your sales force needs, you have a problem. Because of this lack of access and information, any hope for accurate forecasting goes out the window. When integrated, ERP and CRM systems can give your team real-time visibility into the business data so they can properly sell and have compelling conversations with customers.

3. Cleaner Quote to Cash Process

This is a conversation we have with almost every one of our manufacturing clients. The concept of having to create accurate quotes off of complicated product configurations is an extremely difficult task. But with increased visibility comes an improved quote to cash process (hallelujah!) We know that the product configurations that you create can be very complex because you build to order. Every choice impacts the next and without a deep understanding of the product configuration at the beginning of the project you’re setting yourself up to fail. Unfortunately, we've found that the beginning of the sales process hasn’t paid enough attention to product configurations and how this impacts the entirety of the project’s lifecycle. When CRM and ERP systems are integrated, your sales team can access the information they need at the beginning to accurately quote and deliver.

4. Mobility

Now that you’ve addressed the two modes of selling, determined who is responsible for the sale, and integrated your CRM and ERP systems properly, your team is ready to hit the ground running. Or are they? Your field team is on the road having dynamic conversations with customers and they must be able to update content at the point of interaction, not at the end of the day. You have to have a mobility strategy that allows you to update pipeline and quote information on the fly. Mobile CRM applications allow you to capture and document this information, ultimately helping you to engage and make better decisions for your customers based off of order information, historical purchases, and current production schedules; all accessible with just a swipe and a tap.

5. The Distributor Portal

A trend that we are currently seeing in manufacturing is an increased focus on keeping existing customers, rather than winning new business. This means that once you’ve made the sale, you have to pivot your attention to keeping the conversation going. Manufacturers, repeat after me: cross-selling is your friend. And how can your team cross-sell more effectively? Through portals updated with information from both ERP and CRM systems. Portals allow you to see where in the manufacturing process an order is, check the status and delivery of past orders, and see the account in real-time. All of this information gives you valuable insight that can help you make the next sale while keeping your existing customers in the know.

CRM is no replacement for ERP and ERP is no replacement for CRM, but the integration between these two systems is essential to increasing collaboration between departments. If you're considering integrating a CRM tool with your existing ERP system, remember this: the key is to create two systems that are tightly integrated and designed in a way that creates a customer-centric environment.

Want to learn more about CRM and ERP integrations for manufacturing? We can get you get actionable data into the right people's hands at the right time to keep your sales and production cycles moving forward.

eBook - Top 10 CRM Evaluation Criteria

Let Lightning Processes change the way you Workflow – Invoking Apex

Posted by on March 10, 2015  |  commentsComments (0)

In part 1 of this series, we looked at the new feature released in Spring ’15 called Lightning Processes and we did a basic comparison between it and Worflows. In part 2, we looked at how to use Lightning Processes to create and update related records. In today’s post, we’ll be looking at how to extend the Lightning Process Builder beyond it’s out of the box capabilities by invoking Apex inside your Processes.


While the Process Builder is very flexible out of the box, it cannot do everything. Salesforce realized that there would be scenarios they couldn’t cover by default, so they allow us to extend the Process Builder by writing Apex code that meets certain criteria, and then invoking the Apex from our Processes.

As an example for today, let’s say we have a custom field on Account called Sample Field 1, and the requirement is whenever Industry is changed we want to copy the value to Sample Field 1.


While we could use a standard field update or a formula field to achieve this, we’re going to use Apex so that we can see how we can extend Processes to do something much more complicated.

To start, we need to learn about a new Apex annotation introduced with Spring ’15: @InvocableMethod. This annotation lets us mark an Apex method as being something that can be ‘invoked’, or called, from somewhere other than Apex. In our case, we’re going to call it from a Process. It also defines some metadata about the method like a human friendly label and description of what the method will do when it’s called. There are some specific requirements that must be followed to make a method invocable, so make sure you read the documentation carefully. In our case, the code is very simple:

Once we have this class saved, we can go to the Process Builder and use it. Most of the setup is the same as before, but when choosing an action to perform we’ll now chose a type of Apex:


Once you’ve filled out the required fields, you’ll have a process that’s now calling your apex class!


To test it out, let’s first try updating an existing record:



That worked! Now let’s try it when we create a new record:



That also works. In general, processes get executed after the record has been soft saved to the database (roughly the same time that workflows would run), so they have an ID already by the time this Apex executes.

A gotcha

When I first wrote this Apex class, I wasn’t originally looking up the record from the database and updating that copy. I tried to instead update the record directly:

It seemed like I should be able to do this, since this is what I would do in a before trigger normally (I also hadn’t yet figured out when exactly Processes run in the pipeline – in hindsight it’s obvious this wasn’t going to work). When I attempted to run the Apex which updated the record directly, I got a nasty error on the form:


Unfortunately, that’s all the detail you can get from the user’s point of view, which isn’t super helpful. There also doesn’t appear to be a way to customize how it’s displayed, which is slightly disappointing. If you’re an administrator in the organization, you’ll receive an email which is more helpful:


The important thing to note here are the Process ID in the email and the details of the Apex error. The Process ID corresponds with the ID the user sees in the error message and can be used for correlation if multiple Processes are having problems. In my case, I was more interested in the Apex details, which states that the records that are passed in to the Apex class are read-only.

Wrap Up

Obviously this example is very simple, but the Apex you use could be quite a bit more complicated. The core lesson here is that we can invoke Apex from Processes if we give it the appropriate annotation and follow the rules in the documentation, allowing us a greater degree of freedom. We hope you find this new power useful. If you come up with any creative ways to use Processes, please feel free to share in the comments below!

The Salesforce Admin's Toolbox: Populating Fields with a Custom Button

Posted by on March 9, 2015  |  commentsComments (0)


The Salesforce Admin's Toolbox is written by Megan Burch, a Salesforce Business Analyst at Sonoma Partners.

Disclaimer: This is considered a URL hack, which is not supported by Salesforce. Salesforce can change undocumented query strings at any time. Also, field ID’s will likely change between environments. Sonoma Partners has code that can resolve this issue. Please contact us for more information.

With Salesforce, pulling information from one object to another with formula fields and workflow field updates is easy. However, sometimes users need to see information or for usability purposes have information pre-populated before they save the record. Custom buttons are a great solution for this. In this edition of the Salesforce Admin’s Toolbox, I’ll outline how to create a custom New Opportunity button on the account related list to pre-populate account information onto a new opportunity form, as shown here:1

1. Create a New Button

To create a custom button navigate to the “Button, Links, and Actions” option from the object you want to create the button. For this example, we will create a new button on the Opportunity. The first thing you’ll want to set is the display type, which determines the layout of the Salesforce side bar and header on the new page.
A “Detail Page Link” button will show up next to the custom links on the detail page. 

A “List Button” will show up on any related lists or configured list view. 

For this example, I created a “List Button” on the Opportunity object. The custom button will show on the Opportunity related list on the Account page (or any other object with an Opportunity related list). Next, we’ll choose a behavior. This gives you an option of how you want the new record to execute. Display in existing window with sidebar will run the flow in the same window you are in, showing the Salesforce sidebar. 
Display in existing window without sidebar will run the flow in the current window, without showing the Salesforce sidebar. 
Display in existing window without sidebar or header will run the flow in the current window, without showing the Salesforce sidebar or standard header. 

Execute JavaScript will execute any JavaScript written in your organization that is set to run items upon a click. Again for this example, I chose Display in existing window with Sidebar. Finally, you’ll want to select your content source, which in this case is a URL, which I’ll explain next.

2. Understanding the URL

Custom buttons in Salesforce can do one of three actions. They can launch a Visualforce page, execute JavaScript, or direct the user to a new URL. Our example will utilize the URL action. The URL action can get complex when you wish to use Salesforce to parse the URL and take advantage of their built-in functionality. To get the base content for our URL, click the “New Opportunity” button on the Opportunity related list from an Account record, paying special attention to the URL value in your browser window.

Copy and paste the URL into your custom button and remove everything before the first forward slash, and everything after retURL, so it looks like this:


Writing the rest of the URL will be easier once you understand the above string.

006 - Each object has an ID in Salesforce. The 006 indicates that the URL will take you to an opportunity record.

You can find a complete list of Object IDs here.

/e - This is the action being taken on the record. In this example, e is for edit.

? - This denotes the beginning of a querystring. Everything after the question mark are name/value pairs that the browser natively interprets. As you will see, we’ll supply a few parameters that Salesforce will interpret for us, such as variables (fields) are included, Salesforce will search the parent object and match up fields on the child object in order to populate them with default values.

retURL - This indicates our originating record and where the information should be pulled. In this case, it will be the account record that I clicked.

3. Populating Fields

Before I can populate the additional fields, I need to tell the button where to pull the fields from (the Account). From the “Insert Field” drop down I selected Account ID and the system inserted it as a merge field. 

The beginning of the URL should now look like this:


Now that I have the base URL for the button, it’s time to populate the fields. In addition to the pre-populated Account Name, I’m also going to populate the Industry and Account Phone number with information from the parent Account.

To populate the fields on the Opportunity, I’m using this general format:

Opportunity field ID = Account field name 

I’m getting the Opportunity field IDs by navigating to the field in the Opportunity set-up and opening it. The ID will be in the URL string once the field is clicked.

Note: ID’s for custom fields will differ between sandbox and production environments.
I’m getting the Account fields using the “Insert Merge Field” drop down I used to get the Account ID earlier. Once I have those two pieces the URL will look like this:



Next, I am going to populate the Industry field on the Opportunity. I created a custom Industry field on the account as a lookup field. Lookup fields need to be entered slightly differently in custom buttons. The Opportunity field ID = Account field name needs to be entered twice, once with the appendage “_lkid”, and the prefix “CF”, if it is a custom lookup. Our example will look like this:



Now the complete button looks like:





4.  Adding a Custom Button to a Related List

Our last step will be to add your custom button. Navigate to the edit page layout screen. Scroll down to the Opportunity related list and click the wrench.  Click the buttons box, un-check the standard new button and select the new button.

Now, when you click on the button the Opportunity record will open with the Account Information fields pre-populated: 
Understanding how custom buttons work and how to create them is one of most beneficial Salesfoce tricks I’ve learned. Custom buttons have countless applications and will help you unock creative solutions to maximize your users’ Salesforce efficiency. 


Let Lightning Processes change the way you Workflow – Related Records

Posted by on February 27, 2015  |  commentsComments (0)

In the last post, we introduced the new Lightning Process builder and looked at the simplest use case of updating the current record. Today, we want to take a look at a relatively common need: updating or creating related records when certain conditions are met on the current record.

Deactivating related records

As an easy example, we’ll build upon the concept of deactivating records we discussed in this post. In our case, if we deactivate an Account, we want to automatically deactivate all child Contacts as well. Using a Process, this task is straight forward.

To begin, we’ll create a new Process:


Next, we’ll add the Account object as the target object and set the criteria appropriately:


Finally, we’ll add a new action to set the Active bit on all related Contact records to false as well:


For good measure, we can do the opposite operation when records are reactivated:


With just these few clicks, we’ve created a powerful new process that will help us enforce data integrity across objects.

Creating Related Records

Updating related records is fine, but we can go further. Imagine we have a requirement that whenever an Account is deactivated, we need to store who deactivated the record and when for auditing purposes. To show off Processes, we’ll create a new custom object related to Accounts that stores this information:


For this example, we’ll be using the CreatedBy to track who changed the status, and the native CreatedDate field to track when it happened.

We could create a new Process to handle this, but since we already have one that deals with Accounts being activated/deactivated, let’s reuse that instead. This helps keep our number of Processes we have to maintain to a minimum, and makes it easier to reason about what is happening when in the system.

Going back to our process, we can add a new Immediate Action for when an Account is deactivated to create a new Account Status History record related to the Account:


Doing the same for the Activate branch and we now have an audit trail built using Processes:


This highlights two important things to note about Processes:

  1. Just like workflows, we can take multiple actions when a record reaches a given state. Combining processes makes it easier to understand what criteria cause what groups of actions, so we recommend keeping your processes as combined as possible, while still making them readable and understandable.
  2. Processes allow us to do some new actions which previously would have required Apex code (like creating related records). This is a big gain for system administrators as they now have another tool with which to meet their business requirements.

Wrap Up

Today we saw that Processes can take us beyond workflows by allowing us to update and create related records without having to write any custom code. They also allow us to take multiple actions, just as with workflows, so that we can combine our logic to keep it as clean and understandable as possible. However, this isn’t all they offer us that’s worth exploring. Stay tuned as the series continues and we explore another set of features!

Let Lightning Processes change the way you Workflow

Posted by on February 24, 2015  |  commentsComments (0)

One of the biggest, if not the biggest, feature in the Salesforce Spring ’15 release is the Lightning Process builder – a totally new way for us to build point and click logic that runs in our organizations. The builder is a rethinking of how workflows should function and provides us with a range of new possibilities that would have previously taken triggers and custom Apex code to accomplish. In the coming series, we’re going to be taking a deep dive in to the Process builder to see what’s new, what’s old, and what’s just plain cool.

Baby’s first process

To begin, we need to know how to get to the builder and create a process. After you have logged in to an organization, you can get to the builder by following Setup > Create > Workflow & Approvals > Process Builder. 


Once you click on the link, you’ll be taken to a new page with a very different kind of UI:


This is the new process builder UI. On this page, you’re given some basic information on what you can do as well as a few helpful links.

To demonstrate the power of the process builder, we’re going to build a few sample processes. Today, we’ll assume that our requirements are:

  • When an Account is created or updated
    • If the Type is Prospect, we want the Industry to be Agriculture
    • If the Type is Other, we want the Industry to be Banking
    • If the Type is anything else, don’t change the Industry

Before we dive in to the Process Builder, let’s take a moment to remember how we would normally approach these kinds of requirements.

The most straight forward way would be to create two workflows: one for each of the two Types we want to handle (Prospect and Other). Each workflow would have its own field update action which updates the Industry to the known value. This works, but does have the downside of the logic being split between two unrelated workflows. This isn’t a huge problem if you only have two workflows total, but if you have dozens or hundreds of workflows, it can be difficult to figure out what workflows are related to what other workflows, and to debug why they might be interacting with each other.

As an alternative, we could create one workflow that checks for both of the types, and then uses a formula to figure out which value to set Industry to. This works, but isn’t as readable as using the two workflow approach. It also doesn’t scale well if you want to create a workflow that deals with more than just a few values.

Let’s look at how a Lightning Process would solve handle these requirements.

On the process builder, clicking the new button brings up a page for us to name our new process and optionally enter a description about it. Once we fill in these fields we’re taken to the main screen of the builder:


Here, you can see that processes are laid out as flow charts, and we build processes by adding and modifying the elements of the flow chat.

To begin, we’ll tell the process that we want to act on the Account object by clicking the Add Object box:


Then selecting Account as the object. In our case, we want this process to run if a record is updated as well as created, so we’ll choose the second option under Start the process.


Leave the other options as the defaults for now and click Save.

Now that we have a processed based on Accounts, it’s time to start adding some logic to it. We’ll handle the Prospect type first by clicking Add Criteria to add a new Action Group (a set of things to do if some logic is true).

The resulting screen should be pretty familiar to anyone who’s built a workflow before, most of the options are the same and it uses a very similar layout. I’ve built out what we’ll need for our first group already:


Notice the very last check box – this tells the process to only execute this branch of logic if the current set of changes made these filters evaluate to true. Without this check box enabled, this logic will run any time the record meets this criteria, regardless of if the change made to the record had anything to do with the filter or not.

After we click save, we’re able to start adding actions if the filter criteria evaluates to true:


Clicking Add Action brings up a new screen that is again similar to building an action for a workflow to take. For now, we’ll create an Update Records action and give it a fitting name:


The next part is a little tricky, when you click the Object drop down you’re presented with a layover (which is a little confusing from a UI perspective…). In this layover, you would expect the Account’s fields to be in the dropdown box:


But in actuality if you click on that dropdown box, you’ll only find the relationship fields. 


This is happening because what you’re actually selecting here are the objects you want to update, which hints at something more powerful than we’ve seen before – the ability to update all related records of your current record. We’ll revisit this idea in a future post.

While it doesn’t look like you can, you can actually click on the text ‘Account’ to select the current Account record as the record we’re going to update.


Once we click save, the rest of the screen is fairly straight forward:


Click save, and we’re done with this branch of logic.

Going beyond workflows

At this point, we haven’t built anything we couldn’t have done with a workflow. Now, we’re going to build out another branch of logic which handles the “Other” type within the same Process and you’ll begin to see why Processes are so powerful – we can effectively combine multiple workflows in to one and still have them be readable and maintainable.

The steps are almost identical and final process looks like:


We could keep adding logic branches – the more we add the more benefit we get from using a Process over a workflow. Once we’re done building a Process, we need to activate it (just like with workflows) for it to do anything.


This is just a small taste of the new power Processes give us, but hopefully you can see their usefulness already. Stay tuned and we’ll take a look at some of the more advanced things you can do with Processes that will help simplify and automate your organizations.

Have a question? Confused about something we wrote? Need help figuring out how to automate your organization most effectively? Contact us and we can help.

eBook: The Trail to CRM Triage

Posted by on February 23, 2015  |  commentsComments (0)

So your first attempt at implementing a CRM system didn't go as planned. Did you know that an astounding 63% of CRM initiatives fail? And they fail for lots of different reasons:

  • Lack of ownership
  • Lack of system management
  • Lack of priority on project's success
  • Inadequate planning and road-mapping
  • Specific partner shortcomings

Maybe your previous partner over-promised and under-delivered. Perhaps there was a lack of planning and poor communication that led your system to its inevitable downfall. Maybe the final product could be described as lackluster at best; it looked great but it didn't really do anything. Or maybe, the project went swimmingly and you're elated with the final product but no one is using it.

Regardless of the reason, we've seen and rescued our fair share of poor CRM deployments. If it makes you feel any better, you're not alone. 

If your previous attempt at CRM left you with a plundering system and an overall sense of frustration, don't give up just yet. A well implemented CRM can do much more than manage prospects, contacts, and sales pipelines. A successful CRM system can help you meet your company's business objectives and ensure that you compete successfully over time.

Download our new eBook, The Trail to CRM Triage, and follow these five steps to guarantee CRM success the second time around. 

Survey Solutions in Salesforce

Posted by on February 18, 2015  |  commentsComments (1)

Today's post is written by Richard Failla, a Salesforce Business Analyst at Sonoma Partners.

One of our clients recently asked us to design a survey solution for them. At that time, they had a separate system they used to manage, administer, and report on customer satisfaction surveys. Much of this work was done manually, especially the reporting piece, which involved some heavy Excel crunching. Our project goal? Use Clicktools to create a more automated solution that brought survey data into Salesforce, thus creating a more holistic customer picture.

After reviewing the requirements I noticed some common issues when implementing a survey solution that would require some creative approaches.

The Problem: “Surveys need to be personalized for each of our clients.”

Since you need a custom field for any survey question you want to pass back into Salesforce, there’s a problem of rigidity: how do we build a solution that allows survey questions to be customized without needing to constantly add new custom fields? The trick was to take each survey question and ask, “What metric does this question probe?”

The Solution: “Don’t fixate on specific survey questions, group them into question themes.”

Let’s look at an example question from a survey:

“Our team is responsive and acts with a sense of urgency."

Mapping that question verbatim to a custom picklist field would make it inflexible and cumbersome to manage for an admin should the question change in subsequent surveys. So instead, we created a custom picklist field and called it “Responsiveness.” Mapping the question to a more general theme allows the flexibility to change the wording of the survey question without having to manipulate the metadata it maps to. So we apply this logic to all relevant survey questions. Here’s an example:


Now, in a future survey we can change the wording of the question in the CMS without having to change it in CRM, so long as the question still gets to the heart of the metric we’re after. 

The Problem: “Each new survey must be re-mapped by an admin.”

The value of automating survey data into Salesforce comes with a cost: each new question/survey you want to ask needs to be re-mapped to Salesforce. This takes unnecessary time to plan and coordinate with admins and can easily delay pushing out surveys. While not ideal, it’s doable if you have an admin but without one this solution looks less sustainable over time.

The Solution: “Create a master survey template.” 

Using Clicktools, we created a master survey template. This template included every single question theme across all surveys. To clarify, no survey questions were added to this template - only the themes we created back in Salesforce.


One of the great things about Clicktools is that it allows you to hide questions on surveys. By hiding all questions, users could use this template to create new surveys by simply replacing the theme with the specific question they wanted to ask and un-hiding the field. Since this master template has already been mapped to all themes in Salesforce, admins would never have to re-map. We also took some time to think through questions themes that could come up in the future but aren’t necessarily on any current surveys and included them in this master template.

The Problem: “Feedback should be collected for any response that scores poorly.”

Client feedback can help you identify areas in need of improvement but to eliminate the guesswork in rectifying the problem, you need to know why you’re not meeting expectations. For our solution, we could have dropped into the survey optional open-ended feedback boxes after each question but that only muddies an otherwise simple form.

The Solution: Creative dynamic question conditions in Clicktools

A neat feature in Clicktools is the ability to dynamically pop questions onto the form based on a
certain condition. In our case, for any response that scored “Neutral,” “Disagree,” or “Strongly Disagree,” we popped an open-ended feedback box. 


So we actually created an open-ended feedback box for each question on our master template (and likewise, created these in Salesforce). Since these questions appear dynamically, there’s no need to “hide” them on the master form thus alleviating admins from more manual manipulation.

The Problem: “How do we use calculations to assess our performance if our response options aren’t numbers.”

For the majority of questions in our survey, respondents had the following values to choose when answering:

  • Strongly Agree
  • Agree
  • Neutral
  • Disagree
  • Strongly Disagree
  • Don’t Know

These options make it easy to map to picklist values but we lose native reporting functionality if we leave them like this. What happens if you want to see the average score for a particular question over time?

The Solution: “Use formula fields to convert picklist values to numbered scores.”

Lucky for us, we can create a simple formula field that assigns a number value for each response:


Without this formula we’d have to either change the survey response options to numbers (which may not be an option) or settle without basic reporting functionality for trend analysis. With this formula, we can both preserve the original survey and still leverage native report summarizations in Salesforce. So we apply this logic to all survey theme questions in Salesforce:


There’s nothing crazy here, but this little formula allows you to leverage native reporting functionality in Salesforce without compromising the original survey.

The Problem: “What’s the top-box and top-2-box score for a particular group of questions?”

If you don’t know, the top-box is the most positive response possible for a given survey question. Subsequently, the top-2-box is any question that scores at least the second most positive response. To determine these scores, we used the following formula:

Total Number of Top-Box Responses / Total Number of Responses

We knew there was some combination of field and report formulas but we scratched our head a bit to figure out how to tie it all together.

The Solution: “Create parent groupings for your question themes and reference them in formulas.”

In order to begin designing a solution to this problem, we had to bundle our themes into parent groupings called “dimensions.” At these dimension levels is where we would apply our top-box scores. For example, we grouped the following question themes into a dimension called “Relationship":


We created three other dimensions and grouped all themes to one of these. We then used 5 formula fields for each dimension to calculate the scores.

Not every question theme was included in a survey so the first formula needed to count the number of total questions in a dimension with a valid response (excluding “Don’t Know”):


Now we needed to find how many of those questions contained either a top-box or a top-2-box response.

Here’s the formula for the number of top-box questions:

8And here’s the formula for the number of top-2-box questions:


At this point, we had everything we needed to calculate our top-box scores, so we created two more formula fields.

Here’s the formula for the Top-Box Score:


And here’s the formula for the Top-2-Box Score:


We applied this same logic to each dimension and now we can see how each dimension performed on a given survey:


Furthermore, we can see how these scores change over time by rolling them into a dashboard with a simple average summary:

Collecting customer feedback in Salesforce requires some consideration before implementation but with only native functionality we were able build a flexibly dynamic solution that requires minimal admin intervention, automates reporting, and can be easily manipulated to account for new surveys in the future. 

CRM 2015 – Custom Help Content

Posted by on February 13, 2015  |  commentsComments (0)

With CRM 2015 Microsoft added the ability to customize help content on a global level as well as an entity level.  Your content will then be surfaced by clicking the question mark icon at the top right of CRM. 


Depending on what entity grid or form you are on, CRM will either take you to the custom help URL specified for that specific entity or if a URL isn’t specified then it will take you to the custom help URL specified at a global level with context information passed in as a parameter.  If a custom help URL isn’t specified at an entity or global level then it will display the native CRM Customer Center.

To setup custom help at a global level:

  • Go to the System Settings in CRM (Settings –> System Settings)
  • On the General tab, scroll down towards the bottom to find “Set custom Help URL”


  • Set “Use custom Help for customizable entities” to Yes
  • You can now specify a URL in the “Global custom Help URL” field
    • This URL can also be a relative path to a custom web resource, for example: /WebResources/new_/help/content/global.htm
  • Set “Append parameters to URL” to yes if you would like the following context information to be appended to your custom URL
    • User Language Code: userlcid
    • Entity Name: entity
    • Entry Point: hierarchy chart or form
    • Form id: formid

To setup custom help at an entity level:

  • Navigate to the entity information in the solution
  • Check the “Use custom Help” box


  • You can now specify a URL in the “Help URL” field
    • This URL can also be a relative path similar to the global custom help, for example: /WebResources/new_/help/content/account.htm
  • Publish Customizations

CRM 2013 Service Pack 1 Update Rollup 2 is Released!

Posted by on February 9, 2015  |  commentsComments (0)

Microsoft released the much anticipated Update Rollup 2 for CRM 2013 Service Pack 1.  The download page can be found here -  The version for this update will start with 6.1.2.

Microsoft didn’t hold back with this release.  The update is jam packed with over 100 fixes!  A few pesky Generic SQL Errors have been fixed, one that can occur when synchronizing to Outlook as well as a random SQL deadlock when trying to update Opportunity Products.  In addition, there are a variety of other fixes ranging from hard errors to performance issues.  For the full list of resolved issues, head to the KB article -

As always, be sure to install this update in a development or sandbox environment to test your functionality before installing it to production.

Contact Us for a Quote, or Personalized Demonstrationof or Microsoft Dynamics CRM for Your Business.

Contact Us