Sonoma Partners Microsoft CRM and Salesforce Blog

Winter ’15 Deep Dive – Remote Objects Part 2

In Part 1 of this post, we looked at Remote Objects from a high level, examining what Remote Objects are and the reasons for using it. In this post, we’ll look at how to actually use Remote Objects on a page as well as some samples of the basic CRUD operations that can be performed.

Enabled Remote Objects on the page

Remote Objects is very easy to start using. If your organization has been upgraded to Winter ’15 (API 32), you already have Remote Objects. To start using them on your custom Visualforce pages, you will need to use a set of 3 new tags: apex:remoteObjects, apex:remoteObjectModel, and apex:remoteObjectField.

For example, assume I want access to the Account object and that the Account object has a custom field named Custom__c on it. I want to be able to access the Id, Name, and Custom__c fields, and additionally rename the Custom__c field to just Custom so I don’t have to keep typing the __c. I could use the following code to accomplish this:

If you do not have any fields you want to rename, there is a short hand for specifying the fields you want:

Accessing the generated proxies

Now that we have declared what objects and fields we want access to, Salesforce will generate the needed Javascript proxies which know how to access the data sitting on Salesforce’s platform. We can access the proxies to do the work that we need:

One important thing to note is the jsNamespace attribute on the remoteObjects tag, which controls the namespace of the generate JS objects. In our case, I set the jsNamespace = JSObjects, so when creating a new proxy instance I need to use that namespace. If you do not set the attribute, the default is SObjectModel.

CRUD Operations

Now that we have access to our Javascript proxies, let’s look at some examples of how to perform the basic CRUD operations with them.


To create objects, we can use code like:


Deleting objects is very similar in form:


Retrieving objects from Salesforce is more interesting. To do so, we first have to define the query we want to use as a Javascript object, then pass that in to the retrieve method and read the results:

The query object has to follow a specific format for the retrieve operation to work. You can find out more details about it on the documentation page. One thing to note here is that it appears you cannot traverse relationships in these queries like you can in SOQL.

For example I wanted to write the equivalent of:

Unfortunately, you cannot write this kind of where clause. If you do, you’ll get an error back from Salesforce about the query not being in the format you expect. This is mildly disappointing since it’s going to force developers to write more queries, which means pages will have more callbacks (reducing readability) and be chattier over the network.

Wrap Up

If you want to just see a full page example of Remote Objects, check out this demo page which we’ve hosted on Github. If you find any mistakes or would like to expand on the demo, feel free to fork the repo and send us a pull request with your changes.

Topics: Salesforce

Using Mobile CRM to Drive User Engagement and User Adoption

Your sales team’s expectations are changing with evolving mobile technologies.

Take a quick look at the role that mobile devices play in their personal lives and take notes. We’d bet that a majority of your team uses their phone to complete tasks that increase productivity and save them time. It’s never been easier to pay bills, book flights, and set that painful reminder for a dentist appointment with just a few swipes, taps, and submits. Field teams are demanding new ways to be productive on the road and if your CRM solution doesn’t meet, or better yet exceed, these expectations… you won’t get the adoption you’re expecting. 

Mobile CRM applications can help you drive user engagement and user adoption like never before. Take advantage of the unique opportunity that these tools present, and build your team an app that gives them access to the information they need, when they need it, in a way they want to receive it.

Mobile CRM and User Engagement

Building a mobile CRM application for your organization gives you the opportunity to capitalize on internal excitement that can come with a new launch. Imagine two very different, but very real, scenarios for rolling out your future CRM system.

Scenario 1:

You are in a conference room that is filled to the brim with your sales team who are uncomfortably itching in their seats. They’ve noticed that there are 50 slides in your onboarding PowerPoint presentation and everyone looks to their lap where they try to inconspicuously reply to emails, on their phone. If you’re lucky, you have 50% of the room’s attention. You’ve spent months building your CRM and the group’s response is lackluster at best. From the point of unveiling, you’ll have to deliver solely on productivity and user value (you did focus on those during your design and implementation, right?) in order to achieve a successful adoption.

Scenario 2:

You are in a conference room that is filled to the brim with your sales team who are relieved to hear there won’t be an onboarding PowerPoint presentation. You begin the unveiling of your CRM by distributing an iPad Air to each member of your team with CRM/business applications that will help them close more business.

If you hand your end users a tablet, preconfigured with the tools they need, they are far more likely to take you seriously. Who wouldn’t love a shiny new toy that could help them do their job more efficiently?

The device handoff approach is far more effective than sending out an email announcement with a link to your CRM log-in. Trust us, we’ve seen both scenarios unfold and there’s no surprise as to which inspires greater end user excitement and engagement.

Mobile CRM and User Adoption

But the excitement that comes with a new CRM system and the corresponding device will eventually wear off. How can you use your mobile app to keep users engaged to the point that they consistently use the system?

Build or enable tools that truly serves their needs. Building value should be at the core of your project and without it, your users will stop using your app before eventually deleting it.

One way to make sure this doesn’t happen is to invest in customization.

A custom application will help you build an app for your user, not your data. Mobile CRM applications cannot do everything a web version can and it doesn’t need to. The goal is not to rewrite your existing CRM for mobility, but rather distinguish a new hierarchy of activities that your team needs access to on their phone or tablet.

Take the time to pinpoint the 2-3 key things that your mobile CRM application needs to be able to tackle. Minimize the complexity of your mobile CRM application by focusing on the key tasks your end users need to do on the day-to-day. If you can build your team an app that continues to solve their problems in a more efficient way, you create the best possible opportunity for user adoption.

One more thing. Choosing the right device is an important decision you need to make to maximize the value of your mobile CRM application. Outline the tasks your users need to perform and then align these tasks with the native components of different devices. Matching the device capabilities with your users needs will help you build the most effective product.

Want to learn more about Mobile CRM applications, user engagement, and user adoption? Contact us to see how you can create meaningful experiences for your users, which can positively impact the adoption and effectiveness of your CRM.

Topics: Enterprise Mobility

3 Ways CRM Can Speed Up The Sales Process

Time is the one thing we all have an equal amount of, yet most would agree that sometimes, 24 hours is just not enough. And a lack of time, or misuse of it, could be what’s keeping your sales team from thriving.

“We want it when we want it.”

Sound familiar? We're making purchase decisions faster than ever before. Our access to information coupled with our ability to click, tap, and swipe our way to a final sale has turned us into lean, mean, purchasing machines. And many transactions that once warranted the need for a sales person now only require a mouse. Depending on which report you’re looking at, studies show that customers are around 60 percent through the sales process before engaging a sales rep.

Once your potential customers do make contact, more educated about your product and arguably more eager to make a purchase than ever, is your sales team responding quickly enough to seal the deal?

It’s estimated that sales representatives spend just 35% of their time selling, with the rest of their week dedicated to:

  • Preparing for meetings and researching prospects

  • Creating their own sales collateral

  • Searching for relevant documents

If your sales force isn’t reacting to customer contact at lightning speeds, your prospects will move on to a vendor that will. What can you do to recover this lost time and get your sales team focused on serving your prospects at the speed that they expect? CRM.

1. Use CRM to Accelerate Responsiveness

Time is a commodity. If your sales team can help prospects make faster purchase decisions, you’re immediately providing them with real value. But faster sales require faster follow ups and faster responses. How can you use CRM to accelerate responsiveness?

  • Generate automatic reports and emails that notify designated sales rep each time a lead converts

  • Detail all interactions with prospects so your sales team can access the information it needs about a specific contact at a moment’s notice

Every moment you aren’t responding to a new lead or answering an inquiry from a current customer is a moment lost. The longer a customer has to wait on you, the more time they have to research an alternative solution.

2. Use CRM as a Document Repository

An overwhelming majority of sales reps don’t use marketing deliverables. This painful reality is flawed for several reasons. The obvious? Your sales team is spending their time creating collateral instead of selling. But this is also problematic for your marketing team and your organization’s brand image. Disjointed messaging, a lack of visual consistency, and lackluster sales materials all work against you as you’re trying to close.

Build your CRM to include all relevant sales kits that your team needs. Set the expectation that these materials are the only ones to be used during the sales process and make sure your marketing team is working to keep them up to date and fresh. Design your documents in a way that make your sales team want to use them instead of the PowerPoint presentations they’re hiding on their laptops. 

3. Use CRM to Document Sales Processes

Your sales process needs to clearly define how your sales team will engage with prospects. It can’t be aspirational and it must be well-documented so it can be accurately followed. How can you aim without a target? 

Use your CRM to document:

  • How leads are handled as they convert - who is notified of new leads? Who is responsible for responding?

  • The mapping of your sales process and what steps are taken as prospects turn into leads, contacts, and opportunities

  • The duration of each step - how long does it take for a follow-up? Who is responsible for handling follow-ups?

Time is as much your enemy as it is your secret weapon. We all have access to it but we all don’t use it in the same way. If you are looking to increase the speed at which you communicate with your prospects and clients, look to CRM. A well implemented CRM can give your sales team what they need and want most: time.

Can we help you build a CRM solution that speeds up your sales process? Contact us to learn more.  

Topics: CRM Best Practices

Winter ’15 Deep Dive – Remote Objects Part 1

With the release of Winter ’15, several new features were added that we at Sonoma think are useful and/or important. Today we will be walking through one of the feature in depth: Remote Objects.

Remote Objects is a new way for developers to establish a connection to Salesforce on custom pages they write so that they pages can interact with data stored in Salesforce. It leverages modern techniques allowing for a better mobile experience, while still retaining (most of) the power of the more established technologies. While this release is mainly targeted at developers, end users will reap the benefits in better performing and more stable pages, especially on mobile devices.

Before there was Remote Objects

Until Winter ’15, when a developer needed to write a custom page, there were two options for interacting with the data: the developer could write a page in Visualforce and backing Apex, or they could write it in plain HTML and Javascript.

Visualforce provides lots of features out of the box and is fast to develop with, but is was never designed for the mobile landscape we’re seeing grow in the enterprise world. (See this post on Lightning for a slightly more in depth explanation of Visualforce and why it doesn’t scale well on mobile devices).

Plain HTML and Javascript perform better on more devices, but is arguably more difficult and time consuming to write correctly. It requires the developer to take in to account a whole range of problems, some device specific, which Visualforce for the most part handles for you. Additionally, when using this option there is no built in way to access the data from Salesforce. Until the release of Remote Objects, a common option was to use the APIs provided by Salesforce to do the basic CRUD operations (Create, Read, Update, Delete). While this works, it does also require that the organization is API enabled and has sufficient API allotment to support all the API calls required by all of the pages for all of the users.

Remote Objects

Remote Objects provides direct access to the data within SFDC without needing to use the API allotment of the organization by introducing a set of new Visualforce tags for developers to use. At first this seems a little confusing since the point was to not use Visualforce but use plain HTML and Javascript instead. In actuality, though, this works well because what causes Visualforce to bog down on mobile devices and networks is the state created by the Apex controller having to be sent back and forth - you can use the new tags and no server side state is required.

The 3 new tags (apex:remoteObjects, apex:remoteObjectModel, and apex:remoteObjectField) provide a way for the developer to tell Salesforce what objects and fields they want access to, and Salesforce generates some Javascript proxies. With these proxies, developers can perform basic CRUD operations as well as Upserts and Queries. With these abilities, developers can continue to write performant pages that work well on mobile devices, without having to worry about API limits.

Wrap Up

In part 2 of this post, we’ll look at how to get started with Remote Objects, as well as some examples of how to use Remote Objects.

Have questions? Not sure if you have Remote Objects in your organization? Contact us and we can help.

Topics: Salesforce

Focus on the Initiative, Not the Platform: How to Internally Brand Your CRM for Success

Here’s the truth about choosing the right CRM platform for your business: it has the potential to be a downright confusing proposition to navigate. There are a lot of variables to choose from in the selection process, including vendors, subscription/purchase levels, and deployment models.

Whether you’re choosing a CRM platform for the first time or you are readying your team to make a jump from one platform to another, you have an important decision to make. During the selection process, you need to pay attention to how you’re communicating the CRM platform you choose to your end users to avoid potential (and unnecessary) pushback.

If your end users have had previous experiences, either good or bad with a specific CRM platform, they’re going to have an opinion on the direction you choose to take.

  • If their previous experience was less than desirable, you are likely to receive pushback and refusal to use the chosen system.

  • If their previous experience was good, and you choose to go in a different direction, you are likely to receive pushback and refusal to use the chosen system.

Here’s an example of how we’ve seen a situation like this play out. We once worked with a client who had the following CRM solutions running simultaneously across different departments:

  • 1 instance of Salesforce

  • 4 instances of Microsoft Dynamics CRM

  • 2 other CRM solutions

When it came time to consolidate the seven different solutions into one, those using the abandoned solutions were irritated that they had to move platforms and learn a new operating system. Unfortunately, the end users got hung up on the name of the platform rather than the new solution they were building, ultimately making the CRM selection process more cumbersome than necessary.

To internally brand your CRM, focus on the initiative, not the platform you’re purchasing and change how the platform exists in the minds of your users.

Instead of focusing on the brand name of the technology, create an internal codename for your organization that’s tied to your company, not the platform. Take advantage of this opportunity and add some fun and engagement into the CRM selection process. Hold an internal naming contest and motivate your users to come up with creative suggestions. Incentivize them to be part of the CRM project from the start, which will ultimately help you deploy your CRM for user adoption.

What you want to avoid? Your team getting hung up on their past experiences with CRM and carrying these preconceived ideas into the new project.

Focusing on the initiative, instead of the platform, gives you the best chance for avoiding internal debate or pushback that can slow your project down. At Sonoma Partners, we offer multiple CRM solutions (Salesforce and Microsoft Dynamics CRM) so we can focus on our client’s best interests, not on one platform. If you need help rebranding your CRM or want more advice on navigating the CRM selection process, we’re here to help.

Topics: CRM Best Practices

Spring ’15 Maps Opt-Out

Salesforce recently sent Opt-Out notices to all administrators of Salesforce organizations regarding the planned release of mapping in Spring ’15. Salesforce will be contacting a third-party to provide mapping capabilities, which means a small amount of data will need to be sent from Salesforce to the third-party. Salesforce plans to automatically enable this feature with the release of Spring ’15 and is giving users the ability to opt-out should they desire. 

If you missed it or haven’t received the Opt-Out notice yet, the full body of the notice is provided below.

Questions? Concerns? Not sure if you need to opt-out or in? Contact us and we can help.

Opt-Out Notice

What is the change?
With the Spring '15 release*, we are offering new map-based features:

  • Display of map images where any standard address field is sufficiently populated**. This functionality will be available through the desktop interface and the Salesforce1 Mobile app.
  • Standard Visualforce components for map creation.
  • Address suggestion and auto-completion available when editing address fields.

We've partnered with a third-party mapping provider to make these features work seamlessly within the application.

*Currently targeted for February 2015; date subject to change
**To qualify for maps display, the Spring '15 feature requires that the address must meet the following criteria: (street AND city AND (state OR postal code OR country). Criteria is subject to change for future releases.

How will this change impact me?
Please review the following information before proceeding: This feature provides users with street maps, which are obtained via geocoding technology or existing geographic coordinates, and suggested address values based on partial entries. This functionality requires Salesforce to share physical address or geographic coordinate information that you or your organization have previously uploaded into Salesforce with the third-party mapping provider.

With respect to the origination of the request, the only identifiable information shared with that third party is the IP address and source location.

  • The shared IP address will be the one associated with the individual requestor.
  • If you use a custom Salesforce domain (e.g. Salesforce's “My Domain” feature or for your Communities,, or sites), the custom Salesforce domain name you have selected may be included in the information sent.
  • If you do not use a custom Salesforce domain, then the domain will be used.

While the address and geography information is publicly available, the mapping provider nonetheless applies confidentiality and security measures to the data that it receives from Salesforce to provide this functionality, and Salesforce does not share any other identifiable information, such as contact name or any other record information with them.

What action must I take?
The maps display on standard address fields and address suggestions will be auto-enabled in production instances* as part of the Spring '15 release. If you wish to disable this technology, please notify Salesforce by December 3rd, 2014. To submit an opt-out request, please complete the following steps**:

  • From your Salesforce org, click to access Help & Training
  • Click on Contact Support
  • Click on Open a Case
  • Select "Feature Opt Out" from the 'I need assistance with' picklist
  • Select "Mapping Services Opt Out" from the Product Topics picklist
  • Click Submit

*Sandbox instances will require the customer to opt-in to the map feature regardless of when they receive the Spring '15 release.
**You will need to submit a request for each org that you wish to opt out.

If you do not submit your opt-out request by December 3rd, 2014, you will automatically receive the maps display and address suggestion features as part of the major release upgrade. Please note, if you decide to use this feature after the Spring '15 release, you will automatically receive enhancements with future releases. Potential upgrades to the mapping integration will be communicated through the release notes posted prior to each release. If at any time you wish you to discontinue use of the feature, you can do so by disabling the permission at Setup | Build | Customize | Maps & Location | Settings.

Standard Visualforce components for map creation require administrator or developer deployment and will not be automatically implemented as part of the Spring '15 release.

How can I get more information?
You can reach out to Customer Support to answer any questions you may have by logging a case on your Help & Training page.

Topics: Salesforce

Dynamics CRM 2015 SLA Enhancements

Microsoft recently announced new features coming out with their next version of Microsoft Dynamics CRM 2015 (previously code named Vega).  Check out the Dynamics CRM 2015 Release Preview Guide to see what features are coming with 2015. 

Next up for our review are the SLA enhancements being made. Pre-CRM 2015, users could take actions if First Response By and Case Resolved By aren’t met.  CRM could also be setup to send warnings if First Response By and Case Resolved By are approaching.

Looking for help with Dynamics Forms? Download our free Dynamics Forms for Microsoft Dynamics CRM 2016 to create complex form rules using a web-based editor.

With 2015, a few new enhancements have been made to make the SLA experience a bit more rich.

Automatically Pause/Resume the SLA time Calculation:

Now with CRM 2015, administrators can setup specific Active Case Status values that will automatically pause the SLA timer if the Case is moved into one of the statuses selected.  When the Case is moved out of that status, the timer will resume and continue.  This is configured from Settings –> Service Management –> Service Configuration Settings.

In the example below, if a Case is moved into On Hold or Waiting for Details, the SLA timer will pause (and this will reflect on the Case form).  When the Case is moved back to In Progress or Researching, the SLA timer will continue where it left off.  This functionality is only available with Enhanced SLAs (described in more detail in the next section).



The On Hold time is tracked per Case record so you can get a glimpse of how long a case has been on hold to follow up and provide better service to your customers.

There may be scenarios where you don’t want your KPIs to be paused, and this can be turned off at the SLA level.  Therefore even though the Case moves to one of the statuses to pause the timer, cases using those SLAs will continue to count down and will not be paused.

Success Actions:

Success actions are new with 2015 and are only available for Enhanced SLAs (described below).  The Success Action can be defined by an administrator, and indicates a set of actions that will be executed whenever the success criteria of a Service KPI is met before the failure time.


Enhanced versus Standard SLA:

In Spring 2014, the SLA functionality that was delivered with Leo was Standard SLA functionality.  Now with 2015, you have the ability to define an SLA as Enhanced.

With the Standard SLAs delivered with Leo, you cannot use the new pause/resume functionality of the timer, and you cannot define Success Actions.  Standard SLAs cannot be converted to Enhanced SLAs.

Also, with Standard SLAs, all data is tracked on the individual case record (First Response By, Resolve By, etc.).  With Enhanced SLAs, this information is all tracked on a related SLA KPI Instance records, and quick view forms are used to show specific information directly on the case (e.g., the First Response In and Resolve In timer controls below).


If you wanted to create additional KPIs that your business tracks in addition to First Response By and Resolve By, you can do this by creating new SLA KPI relationships to the Case.  Doing so will automatically allow you to create SLA Items against your SLA, and define the Warning / Failure / Success criteria and actions for the new KPI.

With the new SLA KPI Instance records, you can create charts and dashboards to be able to quickly get counts of cases based on the KPI Status, and have a better understanding of how your service department is performing at a high level.


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