Sonoma Partners Microsoft CRM and Blog

Making their Mark: Landmark's Adoption of Salesforce


Landmark Services Cooperative is a member-owned cooperative business with five divisions: Agronomy, Animal Nutrition, Energy and Retail Services, Grain, and their financial division, Verity Business Solutions. They provide agriculture products, services, and resources to over 15,000 members in communities throughout southern Wisconsin and northern Illinois.

When we first met Landmark in the fall of 2015, their divisions operated independently from each other when it came to customer data. Tim Dusek, Landmark’s Executive VP of Sales & Marketing, spearheaded this CRM project primarily to improve visibility into customer data and as a result, increase cross divisional sales and gain greater efficiency in their sales efforts.

By implementing Salesforce and increasing their investment in CRM, Landmark looks to revolutionize how their company operates.

We had the pleasure of sitting down with Tim a few weeks ago for a Q&A session on the progress of the project as Landmark continues to roll out their new CRM solution.

How have your employees taken to the new CRM system?

Tim: It’s been an evolving work in progress. When we first rolled it out, we gathered a lot of excitement around the new tool. We branded the project with a creative name – “Mark” – and did some internal marketing to spread the word, answer any questions in advance of the deployment, and get our sellers looking forward to the new and improved resource. That being said, there was a bit of resistance from some of the more seasoned sellers. I think they saw this to be more administrative burden with little reward with them. We continue to focus on the “What’s in it for Them” approach. We’re still working to appease this group of individuals, but ultimately, this is going to make our organization stronger and I think they’ll understand that once they get more familiar with the new system.

How will CRM improve your sales’ team effectiveness?

There are a lot of different ways CRM is going to be a tool for our sales team. We’ve built out functionality to access existing customer’s recent activity and basic customer information easily while in the field. All of this data is integrated with our ERP system, too. It’s seamless and efficient in a way that our processes never were before.

How do you plan to use CRM to better compete in your industry?

An edge Landmark already holds over our competitors is our ability to provide services across our different divisions. We have a few competitors who offer agronomy services but not necessarily animal nutrition. CRM allows us to channel this competitive edge to increase visibility across our departments. We ran into a situation recently where a client of the agronomy division wasn’t even aware we had a grain or animal nutrition division. We’d like that to never be the case.

What business problems are you trying to solve with CRM?

For us, it’s really a platform for centralized information. We have a lot of information kept in the brains of our very intelligent employees. We needed a way to spread this knowledge and make it accessible to all. By providing our employees with a single resource to hold information, we eliminate informal communication as a way of “storing data.”

Another key motivator to improve our CRM system was the cross-departmental visibility into accounts. As I mentioned, we never want someone to be missing out on an opportunity just because the client is unaware we have those capabilities here.

Why do you think your industry needs CRM?

I think customer retention is a huge motivator for the agribusiness sector – and most other industries who gain more revenue from existing than new clients – to get CRM. If you’re able to be more strategic in how you market to your current clients, you have a better chance of continuing to do business with them.

I also believe that technology in agribusiness has historically been behind. We need to evolve not only to rapidly grow our business, but to continue to attract the top talent in the industry who have come to expect this level of expertise.

Our thanks to Tim and Landmark for sharing their progress so far on their implementation. We look forward to reporting back on the project post-completion!

Are you looking for some CRM advice? We’re always happy to hop on a call.

Topics: CRM for Manufacturing

Dynamics CRM Performance Considerations

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

While working on a 2016 org upgrade from 2015, I was tasked with looking into a few performance issues that affected specific parts of the system, such as Connections and Activities. For Connections, the lookup to select the Connect To field took a very long time to load and would sometimes return a SQL time out error. For Activities, we were seeing long waits for quick find search results. While looking into these issues, we used both CRM and SQL Tracing, and we were able to identify a few problems that were easily fixed through native changes. These changes produced a dramatic improvement to the specific issue and the system as a whole. Some of these might seem obvious, but these can be good things to look for when you first come to an existing implementation.

Connections and Quick Find Views

First thing we noticed was that there were a bunch of Quick Find Query requests to pull in each entity listed as available to Connections. Microsoft does not provide a way to uncheck this availability, but we were able to identify a few unneeded custom entities, delete those entities, recreate them, and avoid the unneeded call to request for that data. The next piece we tackled was some of these Quick Find queries were taking a long time. After reviewing the Quick Find views, we found a lot of fields included as a part of the Quick Find. Each field that is selected can poetically create an index which should help searching, but what we found was that there were many fields of the same type being search on, like Owner, Regarding, and Modified By. This combination of fields to search on created a SQL statement that union 3 select statements to consolidate the results from the entity we were searching on, the users entity to cover the Modified By, Contact, and Accounts for the Regarding field. This union was not needed since we really did not need to have Modify By and Owner set to searchable by the Quick Find view. Once we removed all the unnecessary Quick Find fields, we had to wait a day or two for the indexes to clean themselves up, but we saw these long running queries go away. 

To edit the quick find view >>  

Permissions and Business Units

Next we found SQL statements that were joining to the POA table and looking at Business Units to identify whether the user querying this data has permission to the individual records. Once I saw this I found it odd since the client I was working with has a single Business Unit. After reviewing there custom roles, we found that a lot of their permissions were set to BU instead of Org level, but with the single BU they are in essence giving folks Org level access. Once we changed all the permissions from Business Unit to Org access, the union to the POA and BU tables were eliminated and the response time of those queries became very small. 

View security roles and privileges>>

New Call-to-action

Topics: Microsoft Dynamics CRM 2016 Microsoft Dynamics CRM Online

Creating a PowerApps Mobile Application with Dynamics CRM in 1 Hour

Today's blog post was co-written by Brad Bosak, Vice President of Development at Sonoma Partners.

I recently presented at the CRMUG Summit on how to use the new PowerApps Studio to quickly create mobile applications using the Dynamics CRM Online connector. As I prepped for this session, my colleague, Brad, and I discovered that native CRM connector can quickly get you to a working functional application in minutes. However, since the connector is still in early preview, some adjustments need to be made to use these applications in practice.

We are going to provide the steps we went through to create an application that will show active contacts in a list, allow you to drill into the contact record for additional details, and finally update the contact records. All of this will begin by using the default template provided by PowerApps through the Dynamics CRM Online connector. The application you will create is shown below:


You are also encouraged to download the completed application, but please review the install note after you extract the file.

Before you Begin

Before trying out this application, you will need to have some prerequisites completed.

  • A PowerApps account using your organization email address
  • A valid CRM Online instanced under the same organization
  • Download the Windows PowerApps Studio application & PowerApps mobile clients for the mobile devices you wish to distribute

Contact App Demo Setup

  • Open the PowerApps Studio and create a new connection to CRM Online
  • Note that this will take you to the PowerApps web page where you can configure a connection
  • Back in the PowerApps Studio, create a new Phone Application using that connection and by selecting the  contacts entity


You will see the application is created and ready for use (in theory at least Smile). The newly created app has a live copy of your contact data and 3 screens (a list screen, contact detail screen, and an edit contact screen). Unfortunately, the default list, detail, and edit screens do not provide the fields or format we desire. To address this, we'll use the rest of this article to simply “clean up” our app. 


Add Data Sources

Since we want to also display and edit company information in our application, we will also add the Accounts entity as a data source. This will be necessary as we demonstrate a work around for the lack of lookup support in the current Dynamics CRM Online connector.


Important: The current Dynamics CRM Online connector does not support lookup or option set data types. This application will need to use a lookup field (Company), so we'll demonstrate how we worked around the lookup limitation.

  • Add Accounts so we can display names in our lists and lookup fields

Change Theme

For variety, let's change the overall app theme. Select the theme of your choice. We went with Light.

Update Icon & App Name & Save Locally

We want to encourage you to save often as you work on your application. There are two save options, one saves to the cloud and the other locally. We prefer to save locally as we work on our application as it is a bit faster with how often we save. This approach also allows us to put our app file in source control. However, in order to distribute the application, you will eventually need to save to the cloud.

You can also change your application name, icon, icon background color, and screen orientation from the App Settings menu. Select File - App settings and then name your app, change the icon and icon background color. Finally click Save and save locally.



Browse Screen

Now that we have saved our progress, we'll update the Browse screen first, using the default screen/list layout provided.

Our first step updates the list filter to only show active contacts and search on the last name field. You accomplish this by selecting the list of records and replacing the Items property with the following line of text:

SortByColumns(Search(Filter(Contacts,statuscode=1), TextSearchBox1.Text, "lastname"), "lastname", If(SortDescending1, Descending, Ascending))

The Filter function trims the dataset based on the criteria entered, in this case only showing active contacts.


Next, we will remove the fields we don't wish to display.

Note: You need to select the first cell of the list to access the individual elements of the list.

  • Remove all fields by selecting each control and clicking delete, except the entity image. We'll add back the ones we want to display.
  • Make the entity image smaller, so it takes up less room in the cell
  • Insert a Text box control to show contact full name
    Note: The CRM connector doesn't return full name in the field list, so we'll need to manually concatenate it
    • Text = ThisItem.firstname & " " & ThisItem.lastname
    • Vertical align to top of image
  • Copy and paste the previous Text box control to to show the contact's job title
    • Text = ThisItem.jobtitle
  • Repeat this process for the Parent Customer (company) field.
    • Text = LookUp(Accounts,accountid = ThisItem._parentcustomerid_value).name
    • Note that lookup fields display the id (GUID), not the label. We'll fix that by using the LookUp function. The LookUp function takes our newly added Accounts collection and matches the parentcustomerid with the accountid. We then use the result to return the name field from the account.
  • Tighten up row height by selecting the bottom of the first cell and dragging to the desired height
  • Change font size as desired by updating the Size property to whatever value you wish


  • SAVE!

Detail Screen

Next, select the DetailScreen1 page from the screen list. We'll also make this screen more presentable to the user. Similar to the Browse screen, we'll remove the fields we don't wish to display and add the ones we do. But for this screen, we'll also take advantage of PowerApps custom card option.


  • Remove all fields but Company Name card
  • Add Custom card and move the card to top of screen by dragging the card to the top
  • Make sure you keep the the custom card cell selected and insert Image
    • Set Image property to ThisItem.entityimage
    • Drag the size to something that fits in the left corner
  • Insert Text box
    • Set Text property to ThisItem.firstname & " " & ThisItem.lastname
  • Insert Text box
    • Set Text property to ThisItem.jobtitle
    • Change font size. Select Size in the dropdown and set it to 16
  • Select the custom card and change card fill to a different color
    • Set Fill to RGBA(227, 233, 241, 1)
    • Note you can use a web converter tool such as to help with the correct RGB color


  • Select Company Name card and then select the Advanced Properties


    • Unlock the card, so we can edit the individual properties


    • Update Company Name to display name to LookUp(Accounts,accountid = ThisItem._parentcustomerid_value).name
    • Close the Advanced Properties dialog
  • Add EmailAddress1 and Telephone1 fields by simply enabling eyeball indicator
  • Select the EmailAddress1 field and change the display to launch the native email client with the email address prepopulated.
  • Similarly update the telephone1 field to display as a phone number. This will launch the native phone client when the application is used.
  • SAVE!

Account Lookup View

In order to work around the lookup field limitation on the edit form, we will create our own lookup dialog for Accounts. We'll create a new screen (page) and populate it with the active account list. This will allow us to call this page from our custom lookup field on the edit page.

  • Click the New Screen button in the upper left of the designer
  • Name this new screen Account Lookup
  • Click Layout in the right pane and select the 'Browse items, one line description' template
  • Rename header textbox to "AccountLookupTitle"
  • Select the text label control and change the text to "Accounts"
  • Update the Items property of the list by replacing the sample gallery text with the Accounts data source and change the search property
    • SortByColumns(Search(Filter(Accounts,statuscode=1), TextSearchBox2.Text, "name"), "name", If(SortDescending1, SortOrder.Descending, SortOrder.Ascending))
  • Click the first cell in the list. Select the text box control and update the Text property to show the account name.
  • Rename the list to "AccountList"
  • Update the Arrow icon's OnSelect property to  ClearCollect( SelectedAccount, { Account: AccountList.Selected } ); Back()
    • This clears previous values and creates (if not already created) an in-memory collection that we can reference from the other views, I haven't found another good way to have a 'global variable' in PowerApps
  • Let's hide the new accounts button, as we don't want to create new accounts. For simplicity, we'll just hide the field, by setting the Visible property to false.
  • SAVE!

Edit Screen

Finally, select the EditScreen1 page from the screen list. Using the native CRM connector for PowerApps, automatically wires up the edit page. We don't want to interrupt this process, but we'll need to use a workaround for the lack of lookup support. For the other fields, it is as simple as adding the fields to the form.

  • Remove all fields except the Company fields and Last Name
  • Add emailaddress1, firstname, jobtitle, telephone1 and order them as shown in the image below.

We will now show you our workaround for managing lookup fields. We are going to relabel and hide the existing type and id fields. Then we'll create our own lookup field that will talk to the Account list we previously created.

    • Update the parent customer field to show our lookup control instead of the GUID
      • Click the ellipsis on _parentcustomerid_type field in the right pane and select Advanced Options
      • Unlock the card to change properties 
        • Click more options in the Data section and change Default field to "accounts"
        • Click more options in the Design section and change Visibility field to false
      • Click the _parentcustomerid_value field and should see the Advanced pane change
      • Unlock the field by clicking the lock at the top of the options pane
        • Select the Text box in the parent customer card on the form
          • Rename the Text box to AccountGuid
          • Set the Visible property to false
        • Change Company Name card Default value
          • This is saying the if we have a selected account in our custom collection, use that value.  If nothing is in our custom collection, use whatever is currently set on the record from CRM
          • If( IsBlank( First( SelectedAccount ).Account.accountid ), ThisItem._parentcustomerid_value, First( SelectedAccount ).Account.accountid )


    • So we have now setup the card and original field bindings for the form to use. What is left is for us to create a field to select the account.

      • Insert a TextBox control to the card
        • Rename the TextBox to "AccountName"
        • Update the BorderStyle property to Solid
        • Update the BorderThickness property to 2
        • Update the X property to 30
        • Update the Y property to AccountGuid.Y
        • Update the Width property to Parent.Width - 60  (to match the other input fields)
        • Update the Height property to 52
        • Update the Text property to LookUp( Accounts, accountid = Parent.Default ).name
      • Insert a magnifying glass icon control to the card
        • Update the X property to Parent.Width - 82  (Note: 82 is the right padding of 30 between the textbox and the edge of the screen plus the width of the icon)
        • Update the Y property to AccountName.Y
        • Update the Height and Width properties of the icon to 52 
        • Update the OnSelect property to Navigate('Account Lookup', ScreenTransition.None)
    • Select the form and update the OnSuccess property to Clear( SelectedAccount );Back()
    • Select the Cancel button and update its OnSelect property to Clear(SelectedAccount);ResetForm(EditForm1);Back()

That's it! Click the Play icon in the top right menu and test your application. If everything is working as it should, save to the cloud to test on your mobile phone.

Topics: Microsoft Dynamics CRM 2016 Microsoft Dynamics CRM Online

How Professional Services Firms Can Crawl, Walk, Run with CRM - Part Two

Today's blog post was written by Bryson Engelen, Sales Engineer at Sonoma Partners.

Professional services firms know how critical it is to their business to implement or improve a CRM system, yet oftentimes the way they approach an implementation can doom them to failure. One of the major problems they encounter is in trying to please everybody all at once. Their "boil the ocean" approach overwhelms users and delivers too much, too soon. Instead, it’s better to think of CRM as a living, breathing thing, and to build upon it over time based on how people actually work, not how they think they work. This can only be done by adding to a CRM system with a well-thought-out crawl, walk, run approach that keeps the users at the center of an ongoing conversation. 

In this series, we will take a look the common use cases for professional services firms as they try to master the basics (crawl), start using CRM on a more strategic level (walk), and then leverage CRM as a platform to solve business problems that would otherwise require custom solutions (run). Think of these suggestions in each phase as an a la carte menu, and in some instances the phase designations may not perfectly suit your firm, so you may implement what is described as a “walk” item in your crawl and vice versa. In our last post, we looked at some of the crawl items for professional services firms. This time around, we’ll focus on the “walk” stage, and we will round out our exploration of this topic in a future “run” post.

When discussing a “walk” item on your CRM list, these should be processes more related to long-term strategy than day-to-day tasks handled by standard CRM functionality. Having implemented basic CRM in the crawl phase, hopefully it is no longer a challenge to figure out the right-sized bits to deploy to users and you now know which teams should do what to address change management. The other things you (ideally) took the time to do after your initial deployment were assess what worked and what didn’t in your rollout, determine what your users reacted to the best, and review feedback after users had spent some time in the system. Using lessons learned in your quick wins from phase one and having developed confidence in CRM firmwide, you’re now ready to transform this productivity tool into something that will help really generate additional relationships and revenue. Here are some examples of how your firm can be strategic with CRM and make it more of a long-term planning tool.

1. Referral Tracking:

For many professional services firms, a lot of business comes from referrals. These can be from alumni, current or former clients, and even from competitors as a result of any number of conflicts. One thing CRM can really help with is scoring your referral sources so you know which have referred a lot of business to the firm, which you’ve referred a lot of business to, and, for some firms, calculating the difference between the two as a referral score. Relationships that have high referral scores and have sent a lot of business your way may be ones worth additional cultivation and those that you have sent a lot of referrals to may be ones you have some additional negotiating leverage with. Referrals are a strong source of business, and without firmwide visibility of your referral history with business partners, alumni, and clients, you don’t have the complete picture of the value your relationships hold for your firm. CRM can bring that visibility to you and be customized to fit your referral tracking model.

2. Key Account Management:

Some firms will designate current clients who represent significant revenue, current clients with significant revenue potential or even strategic prospects as “Key Accounts.” These accounts represent a lot of value to the firm in either revenue or relationships, and it may be that the revenue information needed to determine if an Account is a Key Account requires a new integration to your ERP or Time and Billing System. Typically there is a Key Account Management process or a Client Team that drives the firm’s interactions with these Accounts to ensure the relationship continues to strengthen. Key Accounts may not be “key” firmwide, but just to a particular industry, office, or geography. As such, there may be several Key Account lists in the system. Identifying and maintaining Key Accounts is a good first step in gaining wallet share with your most valuable clients.

3. White Space/Green Field Reporting:

Most firms can’t quickly and easily see what services a client is currently using and what services they are not. Whitespace Reporting allows you to better understand the opportunities that exist within specific existing clients. Additionally, most firms can tell you anecdotally what their ideal client looks like, but don’t have data on it, or tools to find more of the same. Green Field Reporting helps you find new clients with similar profiles as your best clients. Data for White Space Reporting typically comes from an integration with an ERP or Time and Billing system, but is consumed on the client record in CRM as lists or charts. Client spend/needs can be broken down by service, geo, office, partner, etc. and rules can be built into the system to give helpful suggestions on cross-sell and upsell. Green Field Reporting identifies new clients in industries, geos, etc. where the firm has had success and can suggest specific prospects or firms not even on your target list that match this profile. For Green Field Reporting to really work, you need data - some from your internal systems and some from external sources. Internally, you need to know your key client’s spending profile and the relationships at those clients. From there, external data sources can provide you with a list of competitors to those key clients, and in some cases you can leverage existing relationships for a warm introduction to competitors (this usually works best at industry conferences). Green Field Reporting can be supplemented by employment history data from your staff, since relationships with former employers can make for excellent introductions. External data sources with this information are generally included with your CRM license or the integrations are available for a minimal cost.

4. Strategic Account Planning:

Professional services firms will often create a 1-5 year strategic plan around Key Accounts that helps gain wallet share with their most valuable clients. Often, these strategic plans are simple Excel, Word, or PowerPoint documents and are therefore not easily visible to all who need them and not reportable or really actionable. Doing Strategic Account Planning in CRM, however, allows you to track the success of your plan year-over-year, spot trends at the industry or firm level of what works and what doesn’t, and allows you to assign out and complete tasks in a centralized place. Some of the things we often see firms tracking in CRM for this process are Current State/Target State of Relationships, Competition/Threats, Influencers, Action Plans, Relationship Plans, Revenue Objectives, Strategic Objectives, and Year-Over-Year Plan Assessments. Generally, it is easier to move an existing Strategic Account Planning Process into CRM and modify it as you go along than it is to introduce Strategic Account Planning within CRM, but with the right messaging and change management, even that challenge can be overcome.

5. Competitor Tracking:

We often encounter firms that will track a competitor on the opportunity level only, and generally only one per opportunity. However, these firms never attempt to really report on this data to see where they win and lose vis-a-vis Service Type, Geo, Office, Partner, Industry, or Client Type, nor do they develop reports to see their own strengths and weaknesses (or those of their top competitors). Tracking competitors at the Opportunity, Client, even Services level allows you to update processes, share best practices, realign staff, and be more selective and efficient in developing proposals. You can develop charts and dashboards for particular competitors or Service Lines, and use those as a springboard for Win/Loss reviews. In addition to leveraging competitor tracking for Revenue Win/Loss, also consider using it for Talent Win/Loss so you can spot trends that may enable you to retain your key staff, or poach top talent from your competitors.

6. Third Party Tools:

While CRM is a powerful tool in and of its own right, one of the things it is really good at is being an aggregate source of data coming in from multiple systems. With CRM as a one-stop shop for your business development team, you can really understand who your clients and relationships are based on more than just what people enter into CRM, but also from what they do and say on other platforms. If you are familiar with Dun & Bradstreet or Hoover’s, you may be surprised at the number of competitors they have with integrations into CRM.  These data services bring client intelligence into CRM like client profile data, news, contacts, and similar clients. More likely than not, your Marketing team uses some form of Marketing Automation to track email clicks and opens, record website activity, and manage campaigns. Many have pre-built integrations into CRM, and some allow you to do all of your marketing automation within CRM itself. Even if you don’t do all of your marketing in CRM, a lot of basic integrations will at least bring marketing data back to CRM, mainly for reporting purposes, or to flesh out a Client record. Some of our professional services clients use Exchange scrubbing tools like Introhive, Gwabbit, and ContactNet to bring Outlook relationship data into CRM. These tools will score things like appointments and emails to determine how strong your staff’s relationships are with Client companies and contacts.  Some have pre-built integrations into CRM while others have data that can be imported and reported on with CRM lists, charts and dashboards. This relationship data can be tracked at the macro and micro level, some track more than Exchange data, and data from these tools can be used to kick off workflows (stagnated clients/unhealthy clients/cross-sell alerts). When you’re ready to really get strategic about your CRM, bringing in data from additional sources can give you a fuller picture of your clients and relationships.

Those are just some of the most common things many professional services firms may need additional guidance on in the second phase of their CRM implementation. There are plenty of others, and there will be even more examples in the last part of our series around a phased approach to CRM when we talk about getting more expansive in the “run” phase. Hopefully, this post helps you recognize how nuanced a CRM implementation can be, which is why a phased approach works best. Simply standing up a basic system and walking away is a recipe for wasted time, money, and energy, and won’t build goodwill with your users. If you want to hear more about how to implement CRM for professional services firms using a phased approach, feel free to contact us.

5 Questions to Ask When Evaluating CRM Consulting Firms

Topics: CRM for Professional Services

Learning Path - Dynamics CRM 2016 Guided Help

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

What is it?

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

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

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

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


Guided Tasks

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

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






Enable or Disable Learning Path

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


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



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

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

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

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

My Experience with Mobile CRM 2016 and Making It Work

Today's blog was written by Argyris Anargyros, Development Principal at Sonoma Partners.

Recently I had the pleasure of upgrading a CRM 2015 On Prem org to 2016 On Prem. The main reason for the upgrade was to take advantage of the latest CRM mobile applications for phone and tablet. Based on what I read and had experienced with implementing CRM Online using mobile apps, I expected this to go pretty smooth. This client was originally on CRM 4.0, upgrade to 2011, then 2015, and now 2016. I was a part of the 2015 upgrade, so some of these challenges were a surprise because I was unaware of all the changes that have happened over the years. Here is a list of all the "fun" stuff we ran into once we upgraded and tried out the phone and tablet apps for iOS and Android. 

Bad Assumption

Let's start off simple and talk about Microsoft's documented limitations for Mobile apps.

"Forms in CRM for tablets are limited to 5 tabs (or 75 fields and 10 lists). This limit includes hidden fields."

What I got tripped up on was the definition of a list. I assumed a list was a view or sub-grid, but that was wrong. The simplest way I defined Lists are screens you can swipe to on your phone. Below is a screenshot of the visual indicator of which the list you are currently on. The underscores in light grey and black show the 10 "lists," or screens, you can swipe to while on an entity. Make sure you watch out for this limitation if your form is on the large side. You may run out of space and sections of your form may not appear as expected. For this project, we were able to trim down the needed sections. This was missed, though, until we went to UAT and someone tried to get to a section that was not available on Mobile.

Argy mobile 1

Where are my connections?

According to the documentation on MSDN, connection were not available for 2013, but for 2016 the disclaimer provided by Microsoft was removed.

Argy mobile 2

This note was provided in the 2013 version of the "Entities displayed in CRM for tablets" section of this article, but not in the 2015 or 2016 version. This note is still valid for 2016.

Error - This view is unavailable.

While swiping around the app, we would occasionally see this message: "Error - This view is unavailable." I attempted to use the mobile app logging to help identify which view or which entity was causing the issue, but nothing there. I ended up identifying the next screen which was the activities entity. After reviewing all the available views, some of the system views were disabled as a part of a previous deployment. It looks like the mobile apps are looking for specific views to be available. Once we activated the "All Open Activities" and "My Activities" views, the errors disappeared.

Default Sales Dashboard

The mobile app home screen is defaulted to the default Sales Dashboard. If  you want to change this default for the browser, all you have to do is make a small change to the site map and set default dashboard for each area, Sales, Marketing, etc. Mobile ignores this and uses one specific OOB sales dashboard. To get around this, we recreated the default sales dashboard as a new dashboard and then edited the OOB sales dashboard to include the data we wanted to see. This way the mobile and web applications showed the same dashboard and the users still have the option to switch to the native dashboard.

White Relationship Tiles

This was a fun one. While on an entity we would see blank tile spaces intermixed with the tiles for related entities. When you tap on those spaces they would take you to a related entity. I ended up finding this helpful article on CRM Tip of the Day which resolved this issue for most entities, but we ended up with a few that this did not work. Luckily we did not need those related entities as related entities, so we removed them from the navigation.

Order of Operation

Intermittently we would see an issue with the mobile app executing JavaScript out of order. This was something we did not see on the browser, but to resolve this we ended up consolidate all of our scripts to one file. Enforce libraries were in place before events are fired helped remove these issues. This might be a practice you are already following, but as this was an upgrade we had a handful of web resources being referenced by the form without issue until Mobile was introduced.

Fields Need To Be On The Form

While taking a look at Opportunities, we started to see this error.

Argy mobile 3

We did not find any of our code that referenced this field, so assuming the mobile app needs this field, we added it as a hidden field on the form and the error went away. We also saw this for the stage field and the same solution worked. Both of these fields are not in use for this implementation, so adding them was not needed for the browser.

Related Lookup Filter

The native filters on related lookups do not work on Mobile, but you can add some JavaScript to fix this. Using the addPreSearch and addCustomFilter XRM commands, you can mimic the same behavior as the native filters. Up to you if you would like to add a check so your code runs for mobile only, but probably a good idea.

I hope this list helps you resolve some of your challenges with the Native CRM Mobile app. The most helpful tip I can provide (taken again from the CRM Tip of the Day) is to make sure you start looking at mobile as early as possible and for developers, use your browser to test/debug mobile issues.

Learn how to use Voice of the Customer in this guide

Topics: Enterprise Mobility Microsoft Dynamics CRM 2016

Dreamforce 2016 Recap

Today's blog post was written by Troy Oliveira, Principal Developer at Sonoma Partners.

After Dreamforce, I can’t wait for next year…

Having spent most of my life in the Midwest, I can be sure of a couple of things. One, I am always looking towards what is coming next (and used to being just a little discontent in the moment). In the summer, all we can think about is how hot and humid it is and that we cannot wait until it cools off. Dreamforce troy 1
In the winter, we complain endlessly about the cold and snow. Unfortunately, this is also a fact of life in how we view our daily work. I have always found the Salesforce platform to be feature rich and developer-friendly, but that doesn’t stop me from complaining about things like API limits and tools. Nor does it keep me from constantly looking for any hint of what is coming in the next release. Second, as an avid fan of the Chicago Cubs, I am very used to having to “wait 'til next year.” That is why I couldn't have been any more excited to go to Dreamforce and glimpse of what's coming in the upcoming releases. 

Going into Dreamforce last week, I didn’t know what to expect. This was my first Dreamforce, and despite all of the suggestions and disclaimers from those who had attended Dreamforce several times, I still wanted to see it all. Obviously, this isn't possible. Especially when you approach the conference through the looking glass of a consultant. Every session holds a treasure chest of knowledge and could lead to the next big breakthrough for one of your customers. It is all at once exciting and daunting at the same time.

Welcome to Trailhead

Dreamforce troy 2Being a developer by trade, I wanted to maximize my time and soak in as much as I could. This led me into the Trailblazer Forest (the whole conference was National Parks themed). I found this to be a great place to ask questions and see what was new in the ecosphere of Salesforce development.

Before digging into a couple of very specific things that I found to be of most interest, I would be greatly remiss without discussing a couple odds and ends.

The Lightning Design System is destined be one of the most powerful and underrated platform features. There, I said it. While today it may seem very trivial and strike many people as just being a way to make their custom development “look” like Salesforce, it is much more than that. By using the SLDS, developers will automatically get access to the ever-changing look and feel that is the Lightning Experience. Talking with some of the SLDS folks, looking at things like extended brand customization (beyond primary/secondary colors!) and a dark theme (up-vote that Idea here), it is evident that the roll-your-own styles are a thing of the past, or at least should be.

The Salesforce development tooling game in the community is strong. At Sonoma, we are partial to using Illuminated Cloud, but tools like The Welkin Suite, Salesforce DX (which I’ll talk about more below), and a redesigned IDE are all pushing each other. When that happens, all Salesforce Developers benefit.

Bulk API v2

The Bulk API is being completely re-imagined. While we won’t be able to see the true benefits and how it all shapes up in Spring ’17, I find it incredibly encouraging to know that Salesforce has recognized some of the pain points.  Dreamforce troy 3

Doubling the number of bulk job batches from 5K to 10K in Winter ’17 was a great step forward. But wait, there’s more. While increasing the batch limit is great, it still doesn’t help the scenario in which I need to use a small batch size in order to keep a job from taking too long to complete, but this will soon be a thing of the past. As they roll out v2 of the Bulk API, the focus will be on records, not batches, and we will be able to process up instead.

In Spring ’17 and beyond, look for ability to do bulk SOQL queries with relationships (no more manually correlating related data). 

All of these improvements are going to make a huge impact on data migrations and large scale integrations.

Salesforce DX

Two words…Command-line Interface. Not enough? Okay, fine. Let’s talk.

Dreamforce troy 4
Out of fear of being hyperbolic, I will go ahead and make another bold prediction. Salesforce DX is going to revolutionize the way that we develop for Salesforce. 

Having tools like the IDE, Illuminated Cloud, and heck, even the Developer Console, are great tools, they are just that, tools. They’re built on top of the platform and require a human to interact with the tool to deploy the code to an already existing environment. Salesforce DX changes all of this.

What does this mean? First and foremost, it means that continuous integration just got a lot easier. No longer do we need to write our own tools to extract or push metadata, to run tests, or even the need to manually create data. This will all be able to be done via command-line scripting. That means that regardless of whether you have a full-blown continuous integration environment, or if you lean more towards a series of batch files, you can automate your development. This also means that you can use whatever development tools that you like to edit your code.

Not good enough? How about the ability to create new temporary orgs on the fly? That’s what you get with scratch orgs. Imagine being able to create a new org, push the latest metadata and code, run your unit tests, and then upload a full data set to be able to demo the new whiz-bang application you just built. Now imagine all of that being 100% automated with the push of a button. That’s why this is revolutionary.

Of course, Salesforce DX is definitely in the “coming soon” stage, but if you can’t tell, I am really excited.

Lightning Component Builder

The switch to Lightning Experience came with the advent of Lightning Components. It also opened up the world of development to a much larger swath of the world’s development community. No longer are developers writing VisualForce, they’re writing HTML and JavaScript.

Lighting Base Components will allow developers to take advantage of some of the same controls that Salesforce uses to build the UI (no more re-creating picklist or text field functionality), and the Lightning Data Service will reduce the need for custom APEX as well as allowing for much faster page loads by sharing cached data.

While this is all great and good, the upcoming Lightning Component Builder takes it a step further. At Sonoma Partners, we have a fantastic group of individuals to direct our user experience development and quite often they are able to give us the full HTML look and feel, meaning that the developer only needs to wire up the data to existing HTML and run with it.

With the Lightning Component Builder, we will be able to take the prebuilt HTML (thanks, UX team!) and using a point-and-click interface, wire up the dataset and event, and have the tool build some of the custom JavaScript events with a few mouse clicks. I’ll admit it, developers are generally lazy. Anything that I can do to automatically generate code, I take it in a heartbeat. That is exactly what this does.

Let’s take this even a bit further. An Admin with some basic HTML and JavaScript knowledge will have the ability create some pretty rich, custom, data visualizations, all without the needing a developer to write a line of code.

That’s a wrap! Dreamforce troy 5a

Dreamforce was awesome. These are just snapshot of the great new things that are coming your way as a Salesforce customer and developer. I have made some pretty bold statements in this post. I stand by them. 

This is some pretty revolutionary stuff, not because features like this are earth-shattering or have never been done before, but because all of these features make the job of extending the platform easier.

When the “how” becomes easier and less time consuming, you can turn more of your attention to “what,” and the “what” is the thing that makes each implementation unique and powerful for your users.

New Call-to-action

If You’re Not Using Partial Solutions, You’re Part of the Problem

Today's blog post was written by Mike Dearing, Principal Developer at Sonoma Partners.

Although I’ve yet to fiddle around with patch solutions, I’ve been leveraging Microsoft Dynamics CRM 2016’s solution segmentation for recent client work as more of our on-prem clients have been adopting the 2016 upgrade. There are definitely a plethora of solid blog posts out there describing solution segmentation at length, but I figured I’d add my experiences to the pool in case they differ from your own.

Ribbon Customizations

No matter if you're using Ribbon Workbench or kicking it old school with some direct ribbondiff xml edits, you can take advantage of solution segmentation. Prior to CRM 2016, you had to be extra careful to ensure that your future ribbon upload didn't end up wiping out someone's customization work, since there was no way to segment out just the ribbon from other entity metadata such as fields, views, forms, etc. With CRM 2016, you have the option to whittle down the entity metadata to essentially just the ribbondiff (there is a bit extra in there, but not much of significance). The key is to make sure that you uncheck both the ‘Add All Assets’ and ‘Include Entity Metadata’ checkboxes on the new ‘Add Subcomponents’ dialog that appears before the traditional ‘Add Required Components’ dialog.

Mdearing 1

If you inspect the resulting customization.xml within the solution zip, you’ll notice a much leaner version of the entity metadata.

Mdearing 2

Less Intrusive Deployments

As a side note, I very rarely deal with productized or ISV solution, so all of this information pertains to unmanaged solutions. It has always been good practice to stick with partial solutions for patches and updates to existing environments, while maintaining a core solution for new deployments. Now you can strip those partial solutions even further down to the individual customizations that you have made. How much you wish to refine your solutions is up to you, as there is always a balance between accidentally missing a customized component, especially in a situation where you have multiple system customizers working on the same solution, versus including all of an entity’s metadata. One thing to note though, is that while the new subcomponents dialog does add a lot more flexibility to which components to include, there is no way (as of the writing of this post) to remove the ribbondiff for an included entity. This is a pretty large oversight that I hope is addressed in a future release, but as of now you’ll need to ensure that you export the target environments ribbondiff first, and reimport applying the segmented solution, otherwise it will be overwritten.

Unfortunately every new feature is not without its quirks. There have been times when hand selecting customizations has timed out for more heavily customized entities, and the required components dialog seems to not always correctly add my dependencies. But all in all, this has been a great help in speeding up customization and deployments, in an area that has otherwise been neglected for quite some time.

Three Steps to CRM Success

Topics: Microsoft Dynamics CRM 2016 Microsoft Dynamics CRM Online

Updating Your Quote from Your Project Plan in PSA

Today's blog post was written by Trent Bell, Principal Consultant at Sonoma Partners.

In our previous blog post related to Microsoft's Project Service Automation, we touched on how the standard Opportunity, Quote and overall sales process capabilities have been extended by PSA to accommodate “service” organizations. In this post, we want to showcase a very useful function professional service organizations and the like might want to take advantage of if they use project plans to help estimate projects for prospects.

As eluded to above, the sales process may require some detailed estimating take place that may naturally come by way of a project plan. PSA has a very nice feature that allows for taking the detailed tasks from a Project (within PSA) and importing them back into an associated Quote Line as “Quote Line Details.” This can be a great time saver for those involved in the sales process.

From the Quote record, double-click on the Quote Line that is associated with the Project you have used to do your estimates. 

Trent psa 1

If you have not already associated your Project to your Quote, the “Project” field will be blank in your Quote Line. Double-clicking on this Quote Line will open the record and allow you to associate the Project as seen here.

Trent psa 2

Once you have your Project entered, click on the “Import from Project Estimation” button in the top menu.

Trent psa 3

A dialog box will pop up providing you with some options for how you want the tasks from your project plan to map to your Quote Line Details.

Trent psa 4

These summarization options can be super helpful because they allow you to decouple the granular details of the project plan from what you want on your quote detail. In other words, you can take a very detailed project plan and roll up that detail to an appropriate summary level for your prospect.

Once your summarization options have been chosen, clicking “Next” will take the content of the project plan and produce Quote Line Detail records as appropriate (see screenshots below). Also, the “Quote Amount” automatically gets updated with the sum of these quote line details.

Project record:

Trent psa 5

Quote Line record:

Trent psa 6

As you might imagine, this can be a great time saver for those involved in the sales process. Just remember, in order for this to provide any value, a Project with a built-out work breakdown structure must exist…which we will cover in more detail in an upcoming PSA post. Stay tuned!

New Call-to-action


Topics: Microsoft Dynamics CRM 2016 Microsoft Dynamics CRM Online

How to Be Awesome at Sonoma Part 2: Deliver Quality Work


This post is the second in our "How to Be Awesome" series, highlighting exemplary Sonomans who live out the different elements of our "How to Be Awesome" list.

The second item on the “How to Be Awesome” list: deliver quality work. We define this as paying attention to the details, avoiding small errors, and making sure you are a true team player in your projects. Clients consider your work output nothing short of world-class.

Here is how some Sonomans deliver quality work:

Kevin1Kevin Yamashita – Sales Engineer
“His attention to detail on demos is amazing! He truly cares about getting everything done right, even if it means more work.”

How do you deliver quality work at Sonoma Partners?
Don’t be afraid to take some time to really think before acting on something. Is this the right thing to do? Is there a smarter or faster approach? How can I do this better next time? Then once you start a task, be tenacious and dedicated. Smell for smoke early and often. Feel obligated to escalate or to ask for help as necessary. If something seems off, be willing to rock the boat and to ask “why?”

Brad Bosak – VP of Development Brad
“I can always count on Brad to deliver even with limited information and usually in situations where we have limited experience. He did so again with one of our applications, figuring out the appropriate solutions and taking the designs from our UX team and making them work for our needs.”

What tip would you give for delivering quality work?
Take pride in your work. If you take the time to fully understand the requirements and really care about what you’re doing, it will be reflected in your output.

AnneAnne Hoesly – Senior Consultant
“Anne goes above and beyond to make sure her client projects are as successful as possible. She identified very early on that one of the UAT processes that a client team was using was not thorough enough and organized a plan for us to do our own scenario testing. As expected, this process identified a number of things that were never considered by the client and provided us the time to resolve those issues before go-live.”

What does “Deliver Quality Work” mean to you?
Anne: For me, delivering a quality product means attention to detail and always keeping the business process as the first priority. A tool is only as powerful as how well it enables the person using it. Ensuring that I always focus on a client’s end users and their needs allows me to create products that make the most impact.

Do you want to join our awesome team of Sonomans? Check out our open positions here.

Topics: Careers at Sonoma