Sonoma Partners Microsoft CRM and Salesforce Blog

User Experience: K.I.S.S. User Adoption Problems Goodbye

Today's blog post was written by Kevin Mech, Senior UX Architect at Sonoma Partners.

A CRM platform is a major investment, and user adoption ultimately determines its success. A user’s experience with the platform is the difference between it being viewed as a useful tool or a mandatory burden. To encourage user adoption, the user’s needs must be fulfilled in an intuitive and simplistic manner.

The K.I.S.S. principle, or Keep It Simple, Stupid, is one of the best approaches for increasing usability and creating exceptional user experiences.

To an inexperienced user, CRM platforms are the antithesis of simple. To create the ideal experience, first consider the user’s needs. A company’s business processes determine an employee’s responsibilities and objectives. Be mindful of these objectives when considering an out-of-the-box CRM solution versus a customized alternative. CRM platforms are powerful but complicated, making it difficult to keep the experience simple.

Kevin mech kiss header image

Going Native

The "native" option is a CRM platform without custom modifications. CRM platforms are designed to accommodate the majority of business processes and user needs. If these processes align well with native CRM functionality, this solution is a viable option and the most cost-effective. However, the K.I.S.S. principle is most difficult to apply in this scenario, since these systems are also inherently complex.

To alleviate this complexity, understanding the user’s objectives is imperative. Map the objectives to areas in CRM that allow the user to complete them in the quickest and most intuitive manner available. To assist in this process, Sonoma Partners offers “ride-along” sessions where the discovery team identifies user needs through observation and discussion, and recommends the most user-friendly approach.

Custom Needs, Custom Experiences

Advanced business processes require customizations to the functionality and user interfaces within CRM for an optimal user experience. Such processes often require the user to complete multiple steps or redundantly perform a task within the constraints of a native CRM platform. The user may need to view an aggregate summary across multiple records, perform a custom search, or another use case that native CRM solves with a discombobulated or non-existent interface.

Once again, identifying the needs and objectives of the user is crucial. What is the user trying to accomplish? Why? How does the user currently accomplish the objective? Understanding the motivational factors behind a user’s actions reveals which pieces of data and functionality are relevant to a user in a customized interface. Initially, this option is more costly, but that cost is recouped through increased productivity and higher user adoption.

After the business requirements and user needs are understood, a customized user interface is created. Sonoma Partner’s user experience team designs the optimal experience for users to accomplish their objectives faster and more efficiently than in a native CRM environment. These customizations range from a small widget to a full screen design and often exist within the context of the native CRM interface. When native CRM creates a poor user experience, customization is a great way to encourage user adoption.

Custom-Tailored Mobile Apps

CRM has been desktop-centric for decades, however, not all CRM use cases revolve around a stationary computer. These users require a mobile solution that allows them to access and update CRM data while out and about. For example, many outside sales representatives spend time updating CRM records long after their face-to-face visits and calls occurred. If these users were provided with a customized mobile application, they could manage their daily responsibilities immediately without wasting valuable selling time.

CRM platforms have lightweight mobile solutions, but they are holistic and are not tailored to particular use cases. A custom application specifically targets user’s needs and surfaces the perfect amount of data required to manage their objectives. Sonoma Partner’s mobility team works with these users to conceptualize and develop the ideal phone or tablet application. This solution maximizes a user’s productivity, efficiency, and overall experience, immediately justifying the initial investment.

To ensure the user’s needs are met, a Sonoma Partners user experience architect accompanies several users on “ride-alongs” to observe them in their working environments. Ride-alongs result in key insights into a user’s daily objectives, pain points, and challenges. Focusing on these insights and following the K.I.S.S. principle results in an app that provides the user the perfect amount of data and functionality to maximize a user’s experience.

Keep It Simple

Make the most of your CRM platform by keeping the experience simple. Identify the objectives of your users and consider whether a native or customized solution results in the best user experience. This ultimately drives the greatest gauge of CRM success: user adoption.

If you ever need assistance to increase user adoption of your CRM solution, we are happy to help.

New Call-to-action

Topics: CRM Best Practices

Your Customers Are Screaming at You but You Can’t Hear It

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

Maintaining and upselling current customers is important to just about any business, and knowing where you stand with a customer right now let’s you develop an ongoing relationship strategy. There are a lot of ways to take a customer’s temperature, and you may already be using them and find them time-consuming, highly subjective, and perhaps inaccurate.

But what if I told you a robot could analyze your relationship with your customer for you with information you already have?

Bryson_Sentiment_Analysis_CRM_blog

Right now, you probably rely on two basic things to know where you stand with a customer: surveys and your gut. Surveys have come a long way in the last few years, with long, complicated forms that need to be compiled manually morphing into simple five star ratings that can be aggregated and analyzed automatically. And as great, simple, and automated as surveys are getting, there is always that nagging suspicion that the customer is just giving all high marks to get it done, that they are being more generous or critical than they really feel, that you caught them on a bad day, and many other concerns. As for your gut, you know when you email, call, or meet with a client by their tone and expression how they feel about you. Still, you might not know whether these feelings reflect their personal feelings towards you and/or whether that translates to the rest of your company. You only really know your little world. In the end, both of the methods people tend to use right now for checking the health of a relationship are pretty subjective, manual, and incomplete.

Some companies have begun doing more sophisticated relationship tracking and scoring by measuring volume and quality of interactions between their firm and their customers. This usually comes in the form of looking at how many emails and appointments (and maybe phone calls) are happening between both companies and in some cases, there is even a scoring mechanism put in place for the depth of that interaction (emails are a low score, meetings are a high score, 1-1 interactions are high scoring while group emails are low scoring). Using this interaction data, you can see how engaged a customer is with your firm and individual employees, and note trends of upward or downward relationship health. You can even automate notifications if a particular relationship between individuals, or relationships firmwide, are heading south.

While that kind of interaction-based relationship analysis is still pretty rare, it is available today and there are products on the market and components of modern CRM systems that have such engagement tracking prebuilt. The limitation is that these will only track the volume and to a certain extent the quality of those interactions, but don’t really tell you the tone of those interactions. Maybe you have the most emails this year with a firm that really only sends you complaints and doesn’t really like you anymore, but the interaction scores are high. So we know the customer is speaking loudly, but is it a cheer or a primal scream of rage?

Ideally, you should be able to know the health of your relationship with your client based on how they tell you they feel, how your gut says they feel, how much you’re talking to them, and an automated, more objective analysis of every single interaction you have with them. Everything we’ve talked about so far pretty much covers most of those needs, but it’s that last bit that is pretty elusive. And this is where sentiment analysis comes into play.

A lot of players in the cloud world are beginning to roll their investments in AI and machine learning into sentiment analysis for customer interactions and pretty much everything else, meaning a robot can now read every email from every person who works for your customers and determine whether that customer likes you or will buy from you. If you have five employees who interact with five contacts at a customer over several months, sentiment analysis can look at every interaction and score whether it was good, bad, or neutral. Those individual scores can be added up to a total score and broken down by employee, month, or sliced and diced however you want. If the customer uses words like “great” or “helpful,” the interaction gets a positive score and if the customer uses words like “disappointing” or “slow,” the interaction gets a negative score. This means the machine is doing what you naturally do when you read an email, but then making that feeling reportable and aggregating that feeling from all the employees of that customer and from every member of your team. Since the interactions are in the customer’s own words, they are likely a little more genuine and a little less coached than a survey, and they aren’t happening at one specific point in time, but over time. They aren’t happening at particular milestones, they are happening all the time. This is critical.

With a little more work, analysis can be done on particular phrases that can signal interest in particular products or services and do things like let you know if a particular email is more important than others, if a customer is asking a question, if they asked for a quote, or any other specific alert that helps you filter out the noise of your inbox. And some of these more sophisticated analyses are beginning to show up in CRM systems, where emails with the characteristics mentioned above create notifications to you and help you prioritize specific customers over others.

While sentiment analysis in the CRM space is pretty immature, activity scoring has been around for a few years, is gaining in sophistication, and will continue to be a critical component for automated relationship scoring. And when we put all these things together we realize that the same robot working on sentiment analysis can do things like look to see if the amount of traffic between your company and the customer has increased or decreased, if you’ve moved from having a lot of face-to-face meetings to just emails, and if you’re interacting with more or fewer people at the customer than before. Then by adding in things like survey results, you get a really strong picture of not just the overall health of your relationship with a customer, but where the relationship is strong and where it’s weak (a particular person, a particular subject, etc.).

This may even mean that in time surveys themselves are dead, because if every interaction you have with a customer is scored in real-time, you’re essentially taking their pulse all the time and can know via machine learning whether they like you or not. And by analyzing sentiment over time and across different customers, different interactions, different sales or service cycles and more, you will begin to know when is the right time to talk about specific topics and begin to have predictive models on what next steps should be.

The whole idea of predictive selling, of a robot telling you what to talk about next with a particular customer, isn’t new; it’s been a point of discussion in the CRM space for years. But what is new is the ability to leverage your customer’s feeling about you in real-time to determine when those predicted actions should happen. And predictive selling products are now getting integrated more and more into CRM and email traffic to enable their accuracy to skyrocket.

If you gauge the health of your relationship with customers using a relationships score, health score, or some mechanism around whether the customer will remain a customer and buy more, you will soon be able to do this far more accurately and without the manual work. Soon you can rely on a robot to tell you which of your customers like you and will buy more from you and which won’t. Because your customers are probably already telling you what you need them to tell you, but you don’t have the tools to pick up on it. And those tools are getting better and better all the time.

To get see a more concrete example of this sentiment analysis at work as it relates to scoring emails, check out this post.

Topics: CRM Best Practices

App Innovators - Are you ready for Summer '17?

Today's blog post was written by Nathen Drees, Senior Developer at Sonoma Partners.

Recently, Salesforce sent emails to all administrators informing them of a change to the Content Security Policy that will affect Lightning Components. The intent was to give administrators and App Innovator partners time to review their components to ensure they meet all the best practices and do not run afoul of the newly enforced settings. Once the Summer '17 release is live, a critical update named “Lightning LockerService Security” will be force enabled, and any Lightning Components not meeting the new requirements may cease to function properly.

Not sure what Content Security Policies or the Lightning LockerService are? Need some help reviewing your components to ensure they’re compliant? Just want to talk to a human being? Contact us and we can help.

The body of the notice has been reposted below for your convenience:

As an admin for a Salesforce org using Lightning components, we want to notify you of an update to LockerService, that will impact your custom Lightning components with the Summer ’17 release.

What is LockerService?
LockerService enhances security by isolating individual Lightning components in their containers. LockerService also promotes best practices that improve the supportability of your code by only allowing access to supported APIs and eliminating access to non-published framework internals. For more information, see the Lightning Components Developer Guide.

What is the update?
LockerService will be automatically activated for all orgs in the Summer ‘17 release. In the Spring '17 release, the existing LockerService critical update will enhance security by enforcing Content Security Policy (CSP) to eliminate the possibility of cross-site scripting attacks by disallowing the unsafe-inline and unsafe-eval keywords for inline scripts (script-src).

What action do I need to take?
If you’d like to apply LockerService to your sandbox or Developer Edition org before the Summer ‘17 release, activate the LockerService critical update. Before the Summer ’17 release, you can manually activate and deactivate the update as often as you need to evaluate the impact on your org. To deactivate the critical update, from Setup, click Critical Updates, and click Deactivate on the critical update labeled "Enable Lightning LockerService Security."

What do we recommend?
We recommend that you test the CSP enhanced LockerService after the Spring ‘17 release in a sandbox or Developer Edition org to verify the correct behavior of your components before activating it in your production org. Before the Summer ’17 release, you can manually activate and deactivate the update as often as you need to evaluate the impact on your org. LockerService will continue to be a critical update for Spring '17.

Note:
- Internet Explorer 11 doesn’t support CSP, so we recommend using other supported browsers for enhanced security.

- When LockerService is activated in sandbox or Developer Edition orgs, you can't edit rich-text fields, and the fields are grayed out. This limitation will be removed when LockerService is auto-enabled for all orgs during the Summer ’17 release.

Where can I find additional information?

For more information, see the LockerService Overview video and the Lightning Components Developer Guide. Also, review Supported Browsers for Lightning Experience and the Lightning Discussion Forums are also a great place to get help from Salesforce and developer community experts.

For additional questions, open a case with Support via the Help & Training portal.

Is your CRM

Topics: Salesforce

Investing in CRM in 2017? Before you buy, talk to an existing customer.

Today's blog post was written by Ariel Upton, Marketing Manager at Sonoma Partners.

I’m not one for New Year’s resolutions (if you want to make a change, do it – don’t wait for the magical January 1st date), but we see a flurry of interest in reviving an existing CRM system or investing in a new one at the beginning of each calendar year. While some of this interest can be attributed to replenished budgets, a portion of these inquiries are fueled by newly established sales and marketing goals that need to be actualized.

Whether 2017 is the year you deepen the use of your existing deployment, or invest in CRM for the first time, I highly recommend seeking out existing customers before you sign the dotted line.

Talking to other people in your industry to learn how they use CRM is an invaluable experience that can help you shape the course of your project.

When vetting potential CRM implementation partners, any reputable consultancy should be able to provide you with customer references. These reference meetings, which usually take place over the course of a 30-minute phone call, will provide you with a high-level understanding of their experience working with said firm and the highlights of their project.

While these customer reference calls are a good start, they cannot replace the information you garner from a face-to-face conversation with another person in similar shoes as your own.

In our experience implementing custom CRM solutions for professional services firms and manufacturing companies, we’ve uncovered that our customers and prospects are most interested in talking with other people in their industry to share their experiences with CRM deployments. These conversations give them the opportunity to exchange notes on successes and failures and walk away from the conversation with practical strategies for enhancing their deployment. Better yet, the discussion gives them an ‘ah-ha’ moment or two that helps them think about CRM in a whole new light.

Having witnessed dozens of these face-to-face conversations in the past, I can pinpoint two topics that help people make better decisions regarding their firm’s CRM deployments:

  1. Industry Impact
    No two CRM deployments are exactly the same, but deployments within particular industries can look very similar. If you’re an Accounting or Management Consulting firm, it’s highly likely that you can compare your CRM wish list with another firm of your size. If you’re an industrial equipment manufacturer, you can make a safe bet that what you’re looking to accomplish is on your competitor’s radar. In no way am I advocating for giving away your company’s secret CRM sauce, but having lively discussions with multiple other companies within your industry can give you a realistic view into the realm of the possible.

  2. Partner Relationship
    There’s no better way to determine what it’s really like to work with a consulting firm than to speak with a sample of their customers; and not just their shining stars who usually get flagged for the aforementioned reference calls. If you’re spearheading a CRM initiative and investing your company’s time, resources, and emotional willpower, you want to make sure you’re hiring an implementation partner that’s going to help you realize your goals the first time around. A huge number of our new clients come to us with CRM triage projects, and a lot of these failed or stalled attempts at implementing CRM are caused by issues with their original partner. Save yourself from having to engage in the selection process for a second time and do as much research as you can to ensure that you select the right partner from the start.

So how do you move beyond the formulaic reference call and get in front of other existing CRM customers?

Customer-headlined events. Realizing how important it is for our prospects to speak with our existing customers we’ve committed to hosting events that bring people together to discuss their existing, and future, CRM deployments. Whether it’s a luncheon with a customer speaker or a three-day event with multiple customer panels, seek out these types of events and attend them. Spending a couple hours of your day, or a couple days of your week, could be the determining factor in the overall success of your CRM initiatives in 2017.

Are you interested in talking to existing CRM customers within your industry? Contact us to learn more about our 2017 events.

Topics: CRM Best Practices

Displaying External Data Using Salesforce Connect

Today's blog post was written by Kyle Dreyer, Principal Architect at Sonoma Partners.

Today we’re going to discuss a feature in Salesforce that we find is drastically underutilized. Salesforce Connect (formerly Lightning Connect) is a feature within Salesforce that allows companies to display external data without having to build a robust, complicated integration. Additionally, the data isn’t technically stored in Salesforce and therefore does not count against your data storage! The evolution of Salesforce Connect now allows the data to be editable (if desired) in Salesforce and can also be reported on. Let’s walk through how to set up the connection:

1. The first step is that the data from the external system needs to be available via an OData (V2 or V4) endpoint. You can also connect to a different Salesforce Org if desired. Note that this endpoint needs to be publicly available to the Salesforce servers.

In this scenario, I am using an endpoint that is located here.

Running a GET in a REST utility shows the following data:

Dreyer

After configuring the External data source, we will have external objects for People, Photos, Airlines, and Airports.

2. Go to Setup -> Develop -> External Data Sources. Click New External Data Source.

3. Populate the appropriate fields. In this example, I configured the information as follows:

Dreyer 2

There are a couple important things to note here:

  1. If enabled, there is an option called “Writable External Objects.” Selecting this is required if you wish to allow the data to be editable in Salesforce. Note that the OData service must allow data to be updated through it.
  2. Authentication – In this example, the service is “wide open,” so no authentication is available; however, Salesforce Connect allows for Anonymous, Per User, and Named Principal authentication mechanisms.

4. Click Save! You have now finished configuring your external data source.

5. After Saving, the option to “Validate and Sync” will appear. This will allow you to select which external objects to create.

Dreyer 3

6. After selecting the object(s) you want to create, click “Sync.”

7. You will now notice that you have several External Objects in your org.

Dreyer 4

8. Unfortunately, these objects are not automatically Deployed, and they are not currently available for reports. In order to fix this, you must click into each one and change the settings as shown below.

Dreyer 5

9. After this step, you may choose to create a Tab for the object(s). Once that is complete, you can start viewing the data!

10. Let’s take a look at our Airlines data from the service.

Dreyer 6

You’ll notice that this is the same data returned by the OData service.

Dreyer 7

Displaying this data is useful (and in some cases may be all that is required), but what if we want to manage the data in our back-end systems through Salesforce? Can we create a new Airline or update an existing one? Since we allowed our External Data Source to be Writable, we can absolutely do that. Let’s start by creating a new airline, called “Sonoma Airlines.”

1. Click “New” on the Airline page and input the data.

Dreyer 8

2. Clicking Save saves the record, but let’s make sure that we can view it directly through the service. I created another GET call to see if we can find this airline.

Dreyer 9

You can see that the airline has been created in the back-end system. The same concept would apply to update the data as well.

Now that you have (hopefully!) seen the value of Salesforce Connect, it would be prudent to consider whether this is a valid option for future integrations within your Salesforce org. It is very simple to configure (this demo took about 15 min) and has relatively robust features. And of course, if you need any more information or have any questions, never hesitate to contact us.

Is your CRM

Topics: Salesforce

Admin Toolkit: Advanced Process Automation with Visual Workflows

Today's blog post was written by Caitlin Pfeiffer, Principal Consultant at Sonoma Partners.

This blog post is written for the advanced admins out there. Ever asked to automate a process that is too complex to achieve with workflow rules or Process Builder, but you don't know Apex and you don't have a developer to help create an Apex Trigger. Try Visual Workflow!

Visual Workflow is an admin tool that is most commonly used for call scripting, but can also be used to complete more complex process automations with clicks, not code.

If you are starting to experiment with Visual Workflow, here are a few things to keep in mind:

  • Salesforce has published a Visual Workflow Guide that is a great reference and includes a few other examples.
  • If your use case requires you to automatically create Orders from Opportunities - great news! Salesforce provides some Flow templates to get you started. Check them out here.
  • Flows are subject to Salesforce governor limits, so if you expect this flow to run in bulk transactions (e.g. integrations or Data Loader updates), you may run into errors (Apex Triggers will need to be used in these cases).

To show you how you can use Visual Workflows to achieve some more complex process automations, I'll show you an example for a common use case I've heard from clients.

Use Case: Automatically creating renewal opportunities when an Opportunity is marked as Closed Won. The renewal Opportunity should be an exact clone of the original Opportunity including products, except the Close Date should be pushed 1 year out and the Stage should be reset to "Qualification." Below is a guide on how to set up this process automation.

1. Create Visual Workflow to create a renewal Opportunity. When you save this Flow,
make sure that you indicate that it is an Autolaunched Flow, so that you can trigger it from a Process Builder Flow (details in step #2). After saving the Flow, also make sure to activate the most recent version.

Pfeiffer 1

a. Create a Fast Lookup (see details below) to pull back the Opportunity details for the closed Opportunity. NOTE: This element should be set as the Start Element for the Flow.

Pfeiffer 2

i. Create a new Variable to store the Opportunity Id of the Closed Won Opportunity. NOTE: This variable will be passed into this Flow, so it will need to be set as an Input variable.

Pfeiffer 3

ii. Create a new sObject to store the Opportunity details.

Pfeiffer 4

b. Create a Fast Lookup (see details below) to pull back the Opportunity Line Item details for the given Opportunity.

Pfeiffer 5

i. Create a new sObject Collection Variable to store all of Opportunity Line Items from the closed Opportunity.

Pfeiffer 6

c. Create a new Assignment element to update the sOpportunity sObject with any of the values you'd like to update on the Renewal Opportunity (see example below) Opportunity with Renewal Values.

Pfeiffer 7

i. Create a new Formula to update the Opportunity Name to append "RENEWAL" to the end of it.

Pfeiffer 8

ii. Create a new Formula to update the Close Date to push it out 1 year.

Pfeiffer 9

d. Create a Fast Create to create the Opportunity using the values in the sOpportunity variable.

Pfeiffer 10

e. Loop through each line item in the cOpportunityLineItems collection variable.

Pfeiffer 11

i. Create a new sObject variable to store the current Opportunity Line Item in the collection variable.

Pfeiffer 12

f. Create a new Assignment element to update the sOpportunityLineItem sObject with the Opportunity Id of the Renewal Opportunity. NOTE: The Id of sOpportunity will be set with the Id of the newly created Opportunity in Step d.

Pfeiffer 13

g. Create an new Assignment element to add the sOpportunityLineItem to a new sObject Collection Variable. You will use this new collection variable to create the renewal Opportunity Line Items.

Pfeiffer 14

i. Create a new sObject Collection Variable to store the updated sOpportunityLineItem's.

Pfeiffer 15

h. Create a Fast Create element to create the Opportunity Line Items using the values in the cRenewalOpportunityLineItems collection variable.

Pfeiffer 16

2. Create a Process Builder Flow to automatically launch the Visual Workflow you just created. When you configure the Flow action, make sure that you are mapping the Opportunity Id to the vOpportunity variable in the Flow.

Pfeiffer 17

3. Voila! You're done! Make sure the Process Builder is activated and test that it's working as you expect. This is just a simple example, but you can use these principles for automating your business processes. Happy customizing!

Is your CRM

Topics: Salesforce

Predictive Vision Service - Step by Step

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

Part 1: Creating and Using a Model

Salesforce recently rolled out a really cool feature for its new Einstein AI platform: Predictive Vision.

The Predictive Vision service allows users to upload pictures to a pre-trained model, and the model returns its best guess (plus a few other probable options) of what is in the picture.

The application of this service maybe isn’t immediately obvious, so let’s imagine you’re a mechanic and you have your own repair shop. Actually - let’s imagine you’re a starship mechanic. That’s more fun. Your clients are sending you pictures of their busted up ships; they want you to send them repair estimates, and – being starship pilots – they want them fast!

Ship's Broke...

Ship's Broke...

The galaxy is a big place, filled with lots of different starships, so you can lose a lot of time figuring out which ship you’re looking at. Predictive Vision to the rescue! Using Salesforce’s metamind.io API, we can build a robust model of all of the different types of ships that you work on. Then, when a customer wants an estimate faster than the speed of light, all you need to do is run their picture through your model, and you quickly know what kind of ship you’re working with. Since you already have a Salesforce platform complete with replacement part prices, cost of labor estimates, and everything else that goes into your business, we can build a slick tool to tie it all together – but that will have to wait for another blog post. For now, let’s get up and running with Predictive Vision.

Let’s Get Started

It’s easy to sign up for the Predictive Vision service and hook it up to your Salesforce org. The metamind.io documentation provides excellent step-by-step instructions for creating a certificate from your Salesforce org, downloading the certificate, and then using it to create a new metamind.io account, so we won’t go over it in depth here. There are also code repositories provided by Salesforce that allow you to quickly create a basic Visualforce page that utilizes an already created image classifier in your Salesforce org.  All you have to do is clone the code repositories, copy the code into your org, and then follow the instructions provided to get the Visualforce page set up.

Now that we’ve got our very own metamind.io account and it’s hooked up to our Salesforce org, we can try out the Predictive Vision service using the default image classifier. Since we need it to identify space ships, let’s see how the default classifier does…

It IS a Space Shuttle. Not Bad!

It IS a Space Shuttle. Not Bad!

The model is 99.9975% sure that this is a picture of a space shuttle. Pretty cool! Maybe we can use the default model and be done with this project right now! Let’s test it with the picture of our customer’s broken ship first.

Definitely Not a Can Opener

Definitely Not a Can Opener

Syringe… nope. Can opener… nope. Slide rule… nope. Space shuttle? Eh. Close, but still not what we need.

The image classifications are only as good as the model we use (and the model is only as good as the data we give it – more on that later). The default model is pretty impressive, but we’ll get much better results if we have a model specifically tuned to the kinds of images we want to classify. So, let’s see how to create a Model of our own.

Create a Dataset

To create a brand new model, we now have to leave the Salesforce org and work directly with our metamind.io account. Metamind.io has a pretty simple REST API that allows you to create new datasets, add labels, upload photos, create models, and classify new images using the models you create. Their documentation shows what the REST calls look like if you’re using cURL to communicate with metamind.io, but they’re pretty easy to translate into whatever language or tool you’re most comfortable with. There has been some talk from Salesforce that they will be releasing wrapper functions for Java, Node.js, and other languages in the future. For now, though, we have to make our own.

The first thing to think about when you’re working with the metamind.io API is how you’re going to get an authorization token. There is a shell script available here which will generate a token for you. It’s designed to run in a Linux or Mac environment, but we were able to get it working in Windows with a little bit of editing.

The easiest solution, however, might be to simply load the sample Visualforce page that Salesforce provides us. They went through the trouble to write an Apex class that gets an access token, so we might as well use it! Remember when we tested the general model? Right below the image, there’s a field called “Access Token.” We can simply load that page and copy the token. It’s valid for one hour and if it expires, we can just reload the page to get a new one.

Sample Visualforce Page with an Access Token

Sample Visualforce Page with an Access Token

Here’s an example of a wrapper function we wrote using Node.js and its request library to create a new Dataset:

Mike sherry 5

To call the function, we just give it a name for the dataset and a list of the labels we want. In our case, the dataset will be called “Starships,” and we’ll give a label for each of the different models of starship we repair at our shop.

Mike sherry 6

The API call returns a JSON object with a dataset id and a list of all of the labels in the dataset, as well as ids for each label. Keep this information around, because we’re going to need it later.

Add Some Images to the Dataset

Now that we have a dataset, we need some sample images to help our model know what it’s looking for. Salesforce recommends providing at least 1000 images per labels, and they also recommend ensuring that each label has roughly the same number of pictures.

For this example, we used about 30 pictures per label and it gives pretty good predictions, so your results may vary if you’re using more or less labels and what sort of images you’re using as input.

To add an image to a dataset’s label, use the “Create an Example” endpoint. You’ll need to convert the image on your hard drive into a file stream. In the Node.js example below, we used the fs library to do the conversion. You’ll also need to pass in the model and label id so that metamind.io knows where to put the image. You can send a request to the “Get a Dataset” or “Get All Datasets” endpoints if you forgot the dataset/label ids.

Mike sherry 7

Once you upload an image, it can take a few minutes for your metamind.io to process it and have it ready to do more work (training, returning information about your model). You’ll know it’s ready when you can hit the “Get an Example” endpoint and it returns information instead of an error message. If you get an error, give it a few minutes and try again.

Train the Model

Once you’ve created a dataset and loaded all the images, training a model is easy! All you have to do is make a REST call to the metamind.io “Train a Dataset” endpoint. Again, you can use cURL or write wrapper functions in your language of choice. You just need to provide a name for the new model and the id for the Dataset the Model will be generated from.

The service returns a JSON object with some information about how the model is being trained, the dataset its using, its current status (it can take a long time to create a model if there are a lot of pictures in your dataset), and most importantly, the model id. To see if the model is ready, send a request to the Get Training Status endpoint.  When it’s ready, you can get some information about your Model’s accuracy by sending a request to the Get Model Metrics endpoint.

Once the Model is ready, you can copy the Model id back into your Salesforce Apex logic and classify images using the new Model!

Let’s Try It Out!

To use the new model, we’ll go back into our Salesforce org and pull up the controller class for the sample Visualforce page we made. Then in the getCallVisionUrl() method, we’ll change the final line so that it passes in our new Model’s id instead of "GeneralImageClassifier" and a URL to the image we’re trying to classify. It will look something like this:

return Vision.predictUrl('http://myimageurl.jpg',access_token, 'myModelId');

Nailed It!

Nailed It!

Our new model is 99.174% sure this is a picture of an X-Wing. With this information, we can now build out a more useful page that populates a service form with potential replacement parts, reputable part vendors, cost estimates, and all sorts of other information we already have in our Salesforce org. We’ve already learned a lot about predictive vision in this post, though, so the full integration of Predictive Vision with our estimate app will have to wait for another post.

NEXT TIME: Integrating into Lightning Components

Topics: Salesforce

Infographic - Dynamics 365: Fast Facts and Advice for Transitioning

In our continued effort to keep you up-to-date on the new and exciting Dynamics 365 platform, check out our infographic on Dynamics 365: Fast Facts + Advice for Transitioning.

Dynamics 365 infographic previewDownload the Infographic >>

Topics: Microsoft Dynamics 365

Driving CRM Adoption Through Effective Communication

Today's blog post was written by Scott Hinton, Principal Consultant at Sonoma Partners.

CRM implementation success is directly related to the level and speed of user adoption. According to Forrester, 49% of CRM people-oriented project issues reported were due to slow user adoption. Resistance to the change initiative is a major culprit. When a CRM project is announced, it's common for impacted users to experience fear and uncertainty related to leader expectations and how work will be done.

A comprehensive communications strategy, as part of a broader managed change effort, drives CRM adoption and positively impacts behavior change, leadership alignment, change readiness, and training efforts.

Change communication best practice is to launch clear, timely, ongoing, and effective project communications from multiple senders and distributed through multiple mediums with targeted messages. Communications are needed during the full duration of the project or program starting with an official launch long before implementation and continuing through the post go-live change reinforcement phase. Let's take a look at seven ways to maximize communication effectiveness and better meet project objectives overall:

1. Assess the Organization and Build a Communication Strategy

A baseline gauge of impacted users' level of awareness and understanding, as well as the historic level of success of change project communications, provides a starting point and informs the Communication Strategy. The Communication Strategy outlines communication objectives and provides the direction for the project change vision, communication plan, messaging, change branding, and communication roles to best facilitate end user movement from initial project awareness and understanding to buy-in. 

2. Create a Change Vision

The project change vision describes the project "Why." The vision is often referred to as the "Case for Change" and outlines the project value and who it is valuable to. It provides the foundation for minimizing resistance and maximizing adoption and overall engagement. It's also a powerful tool for aligning leaders because it incorporates business goals and defines what project success looks like.

3. Develop a Message Map

Precise messaging improves communication effectiveness. The process that outlines end user change topics is called Message Mapping. The Message Map defines impacted stakeholder expectations (leaders/employees), project benefits (organization overall, impacted users, and clients), where the organization is going and how/when it will arrive at the desired future state. According to Prosci, a global leader in change management research and education, employees want to understand the project "Why" and the risk of not changing. Communicating what's in it for me (WIIFM) based on what users really care about, is often overlooked and a critical communication component. 

4. Build and Manage a Communication Plan

The Communication Plan brings it all together. A few things to remember:

  1. Communication Plans typically include the communication month, date, audience, medium, frequency, key message/s, senders, and creation owners. Ask resources (HR, Marketing, etc…) with specific company knowledge and/or communication skills to review the plan and ensure the communication plan is covered at project team meetings and Sponsor checkpoints.

  2. Leveraging multiple senders beyond the project team including the executive sponsor, sponsor, and key functional managers is encouraged. According to Prosci, "Employees prefer to hear messages about the business issues and reasons for change from the sponsor and prefer to hear about the day to day impact on their jobs from immediate supervisors." Use designated change agents to reinforce key messages. This distributes the role of change leadership throughout the organization.

  3. Utilizing a mix of communication mediums is also important including face-to-face because it's more personal and better facilitates dialogue.

  4. Repeating key messages at least five times increases the likelihood that the information is absorbed.

Scott hinton table 6

5. Know the Audience

A structured change management framework better facilitates adoption because it’s not a one-size fits all approach. Through various assessment tools, unique user requirements and perspectives are captured, and communication can help address particular needs.

6. Ensure Feedback Loops are in Place

Emphasizing listening and providing feedback loops ensures all voices are heard. This allows impacted users to be part of the change; ideas are captured and trends are identified. Feedback should also include pulse surveys to validate communication effectiveness.

7. Create a Change Initiative Brand

A change brand creates message consistency and is a powerful communication tactic for strategic change programs. Branding could include a slogan, change initiative name, and logo. It’s a great way to market the change and develop brand identity, recognition, and legitimacy.

Early communication supports greater project awareness. Thoughtful and deliberate ongoing communication builds understanding, acceptance, and ultimately buy-in. An effective communication strategy will account for and increase the degree of change readiness at the individual and organizational level and result in quicker and higher overall adoption levels and project success.

As always, please reach out should you have any questions.

Topics: CRM Best Practices

Proper CRM Planning in an Impatient World

Today's blog post was written by Scott Zelinski, Senior Director at Sonoma Partners.

The pressure on Sales, Marketing, and IT leadership to deploy CRM quicker and cheaper is higher than ever. In addition, senior management expects CRM solutions to be deployed for their organizations with minimal disruption and immediate business benefit.

Cloud-based CRM platforms like Salesforce release new features and functionality three times a year and bombard their clients and prospects with stories of quick deployments and ROI success in an incredibly short amount of time. Mobility, predictive analytics, linkages, or acquisitions of related applications are announced constantly. On the other hand, research groups like Forrester and Gartner claim nearly half of CRM deployments fail due to lack of adoption and proper planning.

So where is the middle ground? The days of detailed and drawn out strategic CRM planning are over. Current solutions can be stood up in a matter of days and cloud-based licensing begins almost immediately upon signature; the meter is running. Yet standing up a solution quickly and expecting adoption and business return to follow with no plan simply won’t work.

Step 1: Define Scope of CRM

When we begin discussions with our clients and ask them to define what CRM means to them, they often talk only about sales force automation functions – turning leads into opportunities and orders. As depicted in the figure below. CRM encompasses every way you touch your prospects and clients/customers. The customer life cycle stages depicted may not be exactly yours but they’re close, and each is an important piece of your CRM plan.

Step 2: Identify CRM Business Capabilities

The number of solutions, modules, apps in the market today is endless, but the business capabilities that your firm is trying to achieve do not change. Organize your thoughts by identifying the business capabilities that are most critical to your firm. See examples in the figure below.

Step 3: Self-Assess

Rate each business capability on two axes: (1) criticality to your business and (2) how well you currently achieve it. The results will create the starting point where planning and research need to occur. Identify the senior leaders in the business and in IT that will likely need to address improvements and increased business value.

Step 4: Create Your Plan

Make it simple, start with quick wins, especially those that drive the behavior and adoption from the field (not senior management). With the appropriate business capabilities identified, strategic research can be done that focuses appropriately on a smaller number of initiatives without being overwhelmed.

Step 5: Begin to Execute Your Plan

Realize that CRM is a program, not a project. Think in terms of evolution of maturity, the desired future state won’t happen overnight, but each project advances your organization in the capabilities you desire the most. Continue to track and score your organization as priorities will change.

Scott Z blog imgIf you need assistance with these types of challenges in your firm, we welcome the discussion: contact us.

Topics: CRM Best Practices