Sonoma Partners Microsoft CRM and Salesforce Blog

Salesforce1 Mobile – Becoming mobile ready

In my last post on Salesforce1 Mobile I showed you how to brand your mobile deployment of Salesforce1 to better fit your brand’s standards including how to change the logo, colors, and publisher button to your own. Now that you have an application that your users can identify with, it’s time to start thinking about the functionality that will allow your users to be effective and efficient at their daily tasks.

Meet Bob, the sailorman salesman

Let’s meet Bob, a door to door salesman who makes his living selling sailing equipment to private boat owners and retail boat companies. Bob has recently purchased Salesforce to track his various accounts, and is on the road most of the time. To begin, let’s look at one of Bob’s accounts in Salesforce1 mobile, without making any customizations to the forms.


Bob isn’t really happy with this layout. All Bob wants to see is the name of the account, the phone number, and its address (captured in the Shipping Address fields). On the related list page:


Again, there is too much information. All Bob needs is Contacts and Opportunities.

Customizing the forms for the mobile user

Let’s see if we can’t make Bob a little more productive by removing the fields from the form that he doesn’t need. The idea here is that we’re going to create a new form that only contains the information Bob needs to see, and assign it to his profile (Standard User). The other users in the system who do not have the same profile as Bob will continue to see the native form and can continue to use the extra fields if desired.

To create the new form, we go to:

Setup > Customize > Accounts > Page Layouts


On the Account Page Layout page, we’re going to create a new layout - not copying an existing layout - and naming it Standard User Layout.

The new default form includes the required fields by default. Let’s add the fields and related lists Bob wanted to the form.


Clicking Save, we’re brought back to the Account Page Layout page. We need to take one more step before turning this over to Bob – we need to assign the layout to Bob’s profile so that the application will use this new layout instead of the native one when Bob looks at an account.

Click the Page Layout Assignment button and change the Standard User to the Standard User Layout.


Once we let Bob know that the changes are ready and he refreshes the account on his mobile device, he will see the changes:



This is all fine, but we can do better. If Bob clicks the publisher button in the lower right corner, he’s still presented with many options that aren’t relevant to him:



Let’s remove these extra actions to just the ones he needs: new contact, new opportunity and link.

Publisher Actions – Overriding the defaults

Going back to our form, we see the Publisher Actions panel, but it looks like there aren’t any actions! Where are the default actions coming from? 


Reading the text carefully, it’s telling us the layout is inheriting the default ones from the global publisher layout and that we can override it, which is exactly what we’re going to do. Clicking the link provided gives us an editable box where we can drag just the actions we care about.


And back on Bob’s device:



As you can see, enabling users to be productive while in the field is not as simple as giving them mobile access to a desktop oriented site. You need to spend time thinking about, and usually working with, the end user and their day-to-day tasks to customize the experience to best fit their needs. Sometimes this can take many iterations, as the users explore their options. Listen to your users’ feedback, and take it seriously as it may help you improve their efficiency, and by extension the bottom line.

Do you need some help with your mobile strategy? Not sure if mobile is for you? Contact us and we can help – from discovery all the way to delivery and post go-live support.

Topics: Enterprise Mobility Salesforce

Dupe Detection on Create/Update Returned to Dynamics CRM 2013…with a bug

One of the biggest features removed when Microsoft Dynamics CRM 2013 was released was Duplicate Detection firing on creates/updates.  While duplicate detection remained via scheduling system jobs, the popular feature of seeing the pop-up appear on creates/updates was removed.

Needless to say the CRM community was in uproar, prompting some users and partners to create their own solutions to backfill the gap that was left by removing this 2011 feature such as this utility by Jason Lattimer.

With the Spring 2014 release that’s started to trickle out to CRM Online orgs, Microsoft has taken this community feedback and put duplicate detection on creates/updates back in.


However, be aware that while Microsoft has pleased many by making this functionality available once again, they didn’t quite get it right.  If you disable duplicate detection rules from running on creates/updates within the settings, the rules still fire and your users will still see the dialog when they create or update records that match a duplicate detection rule.


The only way to disable duplicate detection from firing on creates / updates is to uncheck the “Enable duplicate detection” checkbox which in turn disables it across the board (on data imports, from MS Outlook, and via scheduled system jobs).  Even if you uncheck “Enable duplicate detection” and recheck it (while leaving the creates/updates unchecked), after republishing your rules, the dialog will still fire on create and update. 

Note:  If you uncheck “Enable duplicate detection” and recheck it, you’ll have to republish your rules as disabling it system wide unpublishes all rules.

Hopefully Microsoft will release a patch soon for this slight oversight so that users can take full advantage of the duplicate detection feature as they did pre-CRM 2013.

Topics: Microsoft Dynamics CRM Microsoft Dynamics CRM 2011 Microsoft Dynamics CRM 2013 Microsoft Dynamics CRM Online

When it comes to custom mobile app development, UX matters. A lot.

Sonoma Partners’ executive Jim Steger wrote a post last fall on enterprise mobile applications and their best features. He told an all too true story about his 2-year old’s innate ability to pick up a cell phone and navigate an app like a pro. It’s tempting to say that kids today come out of the womb getting technology these days but the truth is that app developers (the good ones!) just get it.

When it comes to and Microsoft CRM mobile app development, we like to think that our camp of developers “gets it”. We understand that the usability of an app is its most important feature. This is precisely why Sonoma Partners whole-heartedly invests in our mobile app development… instead of just tacking it on to a list of service offerings.


What does this UX investment look like?

Mobile app development comes in a lot of shapes and sizes: a loft space with 50 developers, a guy that remembers “a little code” from his college HTML course, a crowd-sourced app built by amateurs in their spare time, or one well-trained but over-worked developer carrying the entire load.

At Sonoma Partners, we utilize dedicated UX architects on every mobile app development project. At the beginning of your engagement we refer to them as the Silent Observer. They spend a day or two watching your users’ every move (we promise it isn’t as creepy as it sounds) to understand how they truly use your CRM. It would be one thing to interview you and ask you your process but it’s a horse of a different color to watch you use the platform and pick up on the shortcuts you take along the way. The primary goal of our UX architects in this phase is to pick up on your sales staff’s idiosyncrasies to observe and identify where efficiencies can be gained.

What do we do with these observations?

UXblog-smallWe begin an iterative design process. After we synthesize our observations we create low-fidelity mock-ups. We present you with a list of our recommendations and ask you what you think. We want to know:         

  • Have we properly captured how your sales staff uses your CRM on a day-to-day basis?
  • Have we distilled the 4 to 5 things that your users needs to be able to do over and over again with ease?
  • Have we created a dashboard that is easy to use and aesthetically pleasing?

Once we’ve reached an agreement we create high-fidelity mock-ups. This is where your app comes to life with your company’s style guide including logos, colors, fonts and font treatments, and spacing. The mobile app that we create for your CRM or Microsoft CRM platform looks like an extension of your brand.

What do you get?

Assuming we did our jobs right, you’ll get a mobile application intuitive enough to use without any training. Our goal is that you and your sales team should be able to use your mobile application without an instruction manual or lengthy training session. That’s why we invest in UX architects and frontend development. We believe that when it comes to mobile application development, the UX design really matters. A lot.



Topics: Enterprise Mobility

Controlling Access to Access Team Templates

One of the great new features of CRM 2013 is Access Teams.  Access Teams provides a great alternative over Sharing as Sharing should always be used as an exception and not the rule.  Too much sharing will lead to a large PrincipalObjectAccess (POA), which can lead to poor CRM performance.  This blog goes into details on recommendations to keep the POA table as small as possible.

For one of our customers we had a perfect scenario to use Access Team Templates.  The scenario is users should only have access to read their own records.  However, if they’re assigned a to-do that’s grouped together as part of a larger deliverable, they need to be able to see all details of that larger deliverable.  Therefore, adding them to the Access Team of the parent record with Read access, and allowing native CRM customizations to cascade that access down to the child records, the user is now able to see all data in this one grouping of work that they normally wouldn’t with normal security roles.





Access Teams are driven by the Access Team Templates (shown above, and available in Settings –> Administration –> Access Team Templates).

However, there’s something you should be aware of.  If the Access Team Template is ever deleted, all Access Teams that were created and use that template will be deleted from the system.  Therefore you need to provide tight security over who can create / update / delete Access Team Templates.

This is where the tricky part came in.  How do you drive permissions to Access Team Templates?  In native security roles there’s no “Access Team Template” or anything similar to that available in the list of entities or miscellaneous privileges.  So what drives this access?

Through painful trial and error, we identified the “not so obvious” Customizations entity (shown below) drives these permissions.  Therefore it’s recommended you remove Delete privileges to Customizations to prevent Access Team Templates from being deleted (for other obvious reasons as well).  Thankfully out of the box only the System Administrator and System Customizer roles have this privilege.



Topics: Microsoft Dynamics CRM Microsoft Dynamics CRM 2013 Microsoft Dynamics CRM Online

Graduating CRM Beyond Pipeline Management eBook

So you’ve got your CRM deployment up and running smoothly. Congrats to you! If you’re like most of our customers, you probably started your CRM system with the sales organization and focused on getting better sales forecasting and pipeline management capabilities. Assuming all is going well, you might be tempted to think you’re “done”. Unfortunately, we’re here to inform you that your work is really just starting. In order to achieve the often-described 360-degree view of the customer, you need to develop a roadmap to expand your CRM deployment beyond the sales department.

Fortunately for you, the CRM system you already own is capable of performing a LOT more workloads for your organization. We estimate that most prospects we talk with only leverage 10-15% of their CRM system’s potential! To help solve this problem, we put together an eBook titled “Graduating CRM Beyond Pipeline Management”.

The goal of this document is to get organizations to think bigger about the capabilities of what their CRM platform can offer. We hope that it sparks some great conversations and opens people’s eyes to what’s possible with their existing CRM system.

You're spending a lot of money on your CRM platform, make sure that your organization is making the most out of its capabilities!

Download your copy of our eBook “Graduating CRM Beyond Pipeline Management” right now!

Topics: CRM Best Practices

Salesforce Streaming API and IE

Today I received a support request from one of our clients with something a little more unusual: a page we had previously built for them wasn’t working for their IE users. This page was using the Streaming API to provide a more interactive interface and let the users know when data had changed in their organization.


After I received the initial description of the issue, I started to dig in. Since the page was working in both Firefox and Chrome, it was pretty much guaranteed to be a JavaScript issue. I fired up the dev tools in IE, and noticed the following statement in our logs:


The statusText property here is what clued me in. Since I wasn’t seeing the error as uncaught, I changed the settings to break on any exception. When I did that, I was able to see the errors occurring inside JQuery:


Hovering over the value of ‘i' in the debugger, the value was ‘withCredentials’. So it looked like there were some cross domain fields trying to be set that IE wasn’t liking. This didn’t really make sense to me as JQuery typically handles these kind of cross browser issues for you.

I pulled in Corey O’Brien, and we crawled up the call stack to inside the jquery.cometd.js file which was causing the AJAX request to be kicked off:


Here you can see the xhrFields: withCredentials being set. Then we looked at what version of CometD we were on: 2.6. Looking at CometD’s download site, the latest stable version (at the time of writing) is 2.9. I pulled the latest files down from CometD, uploaded them as static resources and refreshed the page. After the update, all was well again.

In Short

If you’re having problems with IE not working correctly with the Salesforce Streaming API, try updating to the latest version of CometD. 

Big changes coming to the next major release of Dynamics CRM

Yesterday Microsoft announced some big changes to the supported configurations for the next major release of CRM after the upcoming Service Pack 1 and Spring ‘14 release.  This time around Microsoft is being more aggressive than they have in the past when removing supported software. 

The biggest changes to support being the removal of the following CRM and SQL Server operating systems:

  • Windows Server 2008
  • Windows Server 2008 R2
  • Windows Small Business Server (All versions)
  • SQL Server 2008
  • SQL Server 2008 R2

As well as the removal of the following browser versions:

  • Internet Explorer 8
  • Internet Explorer 9

Some other notable changes are the removal of read-optimized forms and the 2007 SDK SOAP Endpoint that has been deprecated for awhile now.

It’s good to see Microsoft being more aggressive with future releases as they can focus more on providing the best product for the latest technology.  We also welcome the early communication as it gives customers a chance to prepare for the new changes.

If you have any questions or concerns about this announcement, head to our Contact Us page or post a comment below.  We would love to hear your thoughts.

Official announcement -

Topics: Microsoft Dynamics CRM Microsoft Dynamics CRM 2013 Microsoft Dynamics CRM Online

Beware of the "Yes Man" – Why your CRM is failing

"My current CRM isn’t working. I don’t know if my implementation partner or the software is to blame?"

We hear this a lot. Customers come to our table curious as to why their current or Microsoft Dynamics CRM deployment isn’t performing as expected. And by curious we mean slightly miffed. We categorize these as “CRM rescue” projects, and Sonoma Partners conducts a LOT of these types of projects.


Technology or Implementation Problem?

When we talk with prospects about their rocky CRM deployment, very rarely is the technology to blame for the problems. Both Salesforce and Microsoft Dynamics CRM have millions of successful and happy users worldwide...if something is wrong with your CRM deployment you probably need to look into the mirror and dive into the specifics of your implementation process.

The most common issues we hear revolve around the implementation partner, and some companies even question themselves for biting off more than they can chew. Believe it or not, we think that both of these issues have the same root cause...a CRM implementation partner who’s a “yes man”.

CRM implementation partners come in all shapes, sizes, experience levels, and areas of specialty. Almost every CRM implementation partner has certified staff, gold partner status, and good technology sometimes it’s not easy to tell them apart. With that said, the partners we strongly recommend you avoid are the ones that always tell you what you want to hear. If the project timeline and budget are too good to be true, there’s probably a reason for that. If they constantly respond with, “Yes! Yes! Yes!” without taking a out.

“Yes men” partners will always do what the customer asks, even if it might cause problems later. Common problems we see from “yes men” partners are:

  • Agreeing to an overly aggressive budget or timeline

  • Doing what the customer asks, instead of challenging to customer to pursue what they really need

  • Not setting correct expectations regarding system capabilities

  • Focusing only on the technology, and ignoring the human and change management components of the CRM deployment

  • Not providing best practices and recommendations

When it comes to selecting a CRM implementation partner - look for a “no”.

Yespeople-smallIf any of these symptoms sound familiar to you, it might be time for you to find a new CRM implementation partner! (Call us maybe?) When you’re on the hunt for a new partner, try looking for a “no”. If the partner challenges your assumptions or pushes back on some of your ideas, you might have found someone that can really help with your rescue project.

Let’s be clear, we don’t advocate that you select someone that crushes your CRM dreams. Of course you should look for a skilled CRM partner that has the staff and resources to build you a CRM system that works for your business. But just because a partner can do whatever you want, that doesn’t necessarily mean they should do whatever you ask.

Instead, we recommend that you look for someone that makes recommendations and encourages you to focus on the key functionalities that you need the most instead of answering all of your questions with, “Yes.”


Topics: CRM Best Practices CRM Platform Selection

An interesting Activity Feeds quirk when customizing an entity’s ‘Follow’ views…

Today's guest blogger is Mike Dearing, a Senior Developer at Sonoma Partners

Do you use Activity Feeds / Yammer for your Dynamics 2013 organization?  If so, be advised that customizations to the ‘Follow’ views (‘<Entity Name> I follow’ and ‘<Entity Name> Being Followed’) don’t come over during a solution import. 



A colleague noticed this the other day when he had renamed the contact entity to a more industry-specific term for his client.  He then went through each view and changed the entity name there as well.  Unfortunately upon import of a solution containing this entity he noticed that the names for these 2 views in the target environment were still, ‘Contacts I Follow’ and ‘Contacts Being Followed’.  He ended up having to manually update the names of these views in the target environment to their correct names.

Intrigued by his plight, I spun up two online trial orgs and did some additional research.  It turns out that no changes actually come over on import for these ‘Follow’ views – including filtering, view columns, and sorting.  As such, this has the potential to be quite a bit more troublesome than what my colleague had run into, depending on how customized your client’s environment is.  Further testing showed that custom entities enabled for posting through Settings -> Post Configuration experience the same issue as well.  And since these views just look like any other view, their reluctance to being imported isn’t readily apparent. 

We’ve went ahead and logged a case on Connect for this, which you can view here.

Topics: Microsoft Dynamics CRM Microsoft Dynamics CRM 2013

Query Resource Feedback Parameter Pilot

Make Your SOQL Run Faster


With the release Spring ’14, Salesforce released a new Pilot feature available immediately in all organizations with API access called the Query Resource Feedback Parameter Pilot. This gem of a feature was found by my colleague Andrew Monshizadeh who alerted the rest of the team it. Today, I want to go through this pilot program with you and explore what it is, and why it’s awesome.

Before there was light

Before the release of this pilot, writing and debugging SOQL usually went something like this:

You write your queries, save them to Salesforce to make sure you don’t have any typos, and manually test with a few records for sanity. Then you write your unit tests with as much bulk as you can muster to try and test for scalability, usually running in to heap or DML statement limits long before you run in to any SOQL limits.

Then, after all is tested and signed off on, you deploy to production where there can be hundreds of thousands or even millions of records, and you pray that everything goes smoothly. Inevitably, though, they don’t and you get the infamous non-selective query error.

Before the release of this pilot, this is when you would cry in to your coffee mug, dig in to the technical resources, documentation and webinars around how the optimizer works (all well worth reading/watching, by the way) and try to reverse engineer what might be going wrong. Hopefully it’s something simple and you can just adjust the query, push code (letting all of the unit tests run again – which takes a not insignificant amount of time) and everything is right in the world again.

Sometimes, there wouldn’t be much you could do at the query level, but the issue could be solved by adding an index (either by marking a field as an external id, or contacting Salesforce support to have a custom index created).

And sometimes, even that wouldn’t help. Your only real option at this point is to contact Salesforce support and work with them to figure out what’s wrong and what you can do about it. This isn’t ideal, for us or for Salesforce, as it slows down our projects and adds additional load to Salesforce’s support team. What we needed was a way to debug the actual queries that are being run against the database, and troubleshoot as close to the metal as possible.

A candle in the dark  Small-image

This is where the new pilot program comes in. With this new pilot program, you feed your query in to a REST endpoint and it will give back some basic information about how the database is planning to execute it. For example, let’s say we have a query on a custom object (call it Custom__c) that needs to be related to OpportunityLineItem. Because OpportunityLineItem doesn’t allow relationships to be created to it, we have to store the ID of the OpportunityLineItem as a text field on our custom object. Lastly, let’s assume we have a query somewhere in our code as follows:Query

Running this query through the explain endpoint might give us back results like:


This page goes in to more detail on how to read these results, but the basic idea here is that the database is having to do a full table scan to find the records we want. This gives us a hint that maybe we should be adding an index to the Opportunity_Line_Item__c field to help with this query.

The documentation clearly states that this new feature is in pilot, so it won’t be the ultimate query debugging tool for all your SOQL needs (yet) but it’s a great new item to have in our toolbox for when things go wrong.

We here at Sonoma are excited by this addition and hope that Salesforce continues to add more functionality like this both to assist us when troubleshooting and implementing projects, as well as take some of the pressure off their own support team.

Is your organization not performing like you would expect it to? Need some help deciding what you should do next or designing some enhancements? Contact us and we can help walk you through the process and implementation.