Sonoma Partners Microsoft CRM and Salesforce Blog

Apple AppStore Lessons for the CRM App Ecosystem

A few weeks ago, Apple released some important data about their AppStore:

  • AppStore revenue exceeded $28B in 2016
  • AppStore revenue grew more than 40% year over year
  • Sales of apps exceeded 90% growth in China in 2016
  • App developers received over $20B in revenue last year

Obviously the AppStore represents big business, and a massive revenue opportunity for companies looking to capitalize on the Apple ecosystem! When you consider that iPhone sales actually declined over the last few years, the massive growth of the AppStore becomes even more impressive. Apple continues to grow the value of their AppStore network, which in turns motivates more developers to create apps for the AppStore, which again increases the value of the network! Economists and other really smart people call this concept the network effect which basically states “a phenomenon whereby a product or service gains additional value as more people use it.”

NetworkEffect

While the AppStore numbers might get your interest, you might wonder what do $0.99 video games have to do with the enterprise CRM market?!?! We think that ISV’s (Independent Software Vendors) in the business software market should sit up and pay close attention to what’s happening in the AppStore…because the same network effects generating 40% year over year growth in the Apple AppStore will create that same growth within the two largest CRM ecosystems:

Salesforce and Microsoft Dynamics 365 represent two of the leading and largest CRM applications in the world. Each of these systems offer their own app stores that work similar to the Apple AppStore, they provide a streamlined and easy way for customers to find and purchase add-ons for their system. Here’s a quick comparison of AppExchange to AppSource:

 

AppExchange

AppSource

Ecosystem

Salesforce

Microsoft Dynamics 365 for Sales
Power BI
Office 365

Launch Date

2006

2015

Approximate # of Apps

~3,000

~380 total apps
~130 for Microsoft Dynamics 365 for Sales apps

App deployment

Cloud only

Cloud & on-premise offering

In-CRM App Marketplace

Yes

Yes

Customer reviews and scores

Yes

Yes

From this chart, you can see that the Salesforce AppExchange owns a longer history and a larger selection of apps compared to Microsoft’s relatively new AppSource. However, we think that the Microsoft AppSource offers great growth potential for ISV’s because its ecosystem extends beyond CRM into Power BI and Office 365…and both of these related Microsoft platforms have large numbers of customers and high growth rates!

Stephen Cummins presented some interesting tidbits about AppExchange revenue:

  • He projected that average app in the AppExchange would generate almost $1 million in annual revenue in 2016.
  • Neeracha Taychakhoonavudh (Salesforce’s SVP of Partner Programs) said Salesforce will boost AppExchange revenues 5X over the next 5 years.
  • The top-performing apps in the AppExchange like Veeva, Apttus and Docusign each generate hundreds of millions of dollars in revenue.

So what does all of this mean for ISV’s? We think that every single business software company ABSOLUTELY needs to have an integration or offering on the Salesforce AppExchange and Microsoft AppSource. With the continued growth of the CRM market, these CRM app ecosystems will start seeing significant network effects which will generate amazing revenue opportunities for ISV’s.  

If your company wants help developing a new app for AppExchange or AppSource, please contact Sonoma Partners. We can help you refresh an old app, or build a brand new one from scratch!

Topics: CRM Best Practices

Shifting to a PowerBI World

Today's blog post was written by Keith Mescha, a Principal Architect at Sonoma Partners.

Power B-What?

There's been a bit of buzz recently in the CRM circles around Power BI and how it fits into the overall CRM landscape. There is certainly no shortage of blogs, podcasts and event demos showcasing the power of this toolset. On a personal note, I'm am seeing the same level of interest based on the meetings on my calendar over the past few weeks.

What we're finding at Sonoma is that the topic of Power BI is still very confusing for most customers. In this multi-part series we hope to help demystify some of the confusion through real-life examples and suggest some best practices based on learnings from our internal use as well as implementations with our clients.

The Basics

Power BI is Microsoft's analytics and dashboard Business Intelligence (BI) suite of tools and solutions. It's made up of a few main offerings:

  • Power BI Desktop – Free development tool for building data models and dashboards
  • Power BI Service – Online PaaS offering to host and share Power BI solutions with a monthly licensing per user subscription based model
  • Power BI Embedded – Online PaaS offering for embedding Power BI solutions into applications for external consumption with a session based subscription model
  • Power BI Mobile – Free mobile app for consumption of deployed Power BI solutions on a mobile device
  • Power BI Enterprise Gateway – On Premise software used to extend on premise data to the Power BI Service

For latest and greatest features and release notes, refer to the Power BI site.

Real-Life Example

Every company I know has data quality issues or challenges to overcome. Unfortunately, we here at Sonoma are not exempt. One of the things we constantly struggle with is incomplete data and stale data. Often times, we will create a record without knowing all of the various data points we typically want to capture. If we do not go back and fill that information in once it becomes known, we are left with an incomplete and potentially inaccurate record. The genesis of the original report request was to provide a means for the data steward team to monitor newly created records.

The original ask was for a custom SSRS report that listed out all Accounts that were missing specific data across a pre-determined list of fields. This report would then be provided to our data steward team on a regular basis to ensure the data is augmented appropriately. When one of my colleagues stopped by to chat about the report, I happened to be in the middle of building a dashboard in Power BI for a customer. He was curious what I was working on, and as we talked and he explained his need, I fired up a new instance of Power BI desktop in an attempt to solve the problem.

image

Get Your Data

I pulled up the 'Filtered Account' view from the 'Get Data' option in Power BI. My User Account is a System Admin and the Filtered Account view resolves all the option set and lookup fields for us, so this was a quick and easy solution. When getting data for many of the source types, you have an option to Import or Direct connect. I’ll go deeper on that topic in my next post but for this solution I chose to import.

image


Shape Your Data

Initially Power BI pulls in all the attributes in the table, this can be a bit overwhelming so filtering down the attributes was our next step. My colleague had a list off the fields he wanted to audit and report, so I filtered down the data set to only include those attributes.

image

Within 15 minutes my colleague and I had a prototype dashboard built with the fields he needed, including a couple charts to use as filters. From there we iterated on a few designs, and ultimately landed on the below look and feel. End to end this entire process took a couple hours to build, including some custom columns to allow linking to our Account Forms on Dynamics and Salesforce.

image


Deploy Your Solution

Once we had a solid solution built in Power BI Desktop, I created a new O365 group for internal reporting, added a few users to the group and then deployed the Power BI solution to the Power BI service.

One key thing to note here is that we had to assign Power BI licenses to these users before they could login and see our dashboard. The fact that we wanted to schedule this a couple times per day and that we were managing this through our 0365 AD bumped us from the free to the paid license. We had a handful of users requiring access and plenty of licenses available so this was a decent option for us. If you have a different need there are other options, we can consider for staying on the free option.

image

Manage Your Solution

From there my colleague could interact with the report by logging into PowerBI.com.

image

After my colleague was happy with the presentation of the data and a few more cleanup steps, I was able to setup the data refresh of the data set in Power BI. We already had a Power BI Enterprise Gateway installed on our SQL Server for another solution, so including my data set in the refresh was very simple with just a few clicks.

Now that our solution was deployed, our data stewards have logged in and subscribed to the dashboards. Every morning they get an email with a snapshot of the dashboard and a link to access the dashboard where they get direct access to the records in Dynamics or Salesforce so they can easily update those with missing data.

In summary, the Power BI platform is a great set of tools that are easy to learn. There is quite a bit of information available through various internet communities, so getting started is easy. As shown here, from idea to solution was less than one day for a very simple deliverable. The toolset can extend into much larger solutions as needed, so please give us a call and let us help you take the next step in your analytics journey within your CRM applications.

In our next Power BI post, we will discuss in more detail the step of getting your data and how to decide on Data Import Vs Direct Query.

Topics: CRM Best Practices CRM for Professional Services Microsoft Dynamics 365 Salesforce

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

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

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

Artificial Intelligence: All the Rage with CRM Today

Today's blog post was written by Kristie Reid, VP of Consulting at Sonoma Partners.

The latest CRM buzz is around Artificial Intelligence. No, not the kind of AI that allows computers to take over the world (yet) or the latest winner of Jeopardy.  I mean the kind of machine learning that can process your CRM data to reveal some pretty amazing things. Some of the use cases thought of so far include:

  • Predictive analytics for lead scoring
  • Proactive notification to identify deals going south before the sales person recognizes what is happening
  • Understanding customer sentiment without needing to pick up a phone to see if they are happy or dissatisfied
  • Automated email creation that inserts the content before you can even think of what to write Kr 1

Salesforce made a huge announcement a few weeks before Dreamforce about “Einstein.”
This is what they are coining as their machine learning technology built directly into the
Salesforce platform. In true Salesforce fashion, they went big at their annual conference with adorable Einsteins running around with the 170,000 attendees.

Kr 2Microsoft doesn’t have a catchy title like Salesforce (or a cute logo), but they do have Azure Machine Learning. This product is currently more of a platform which can be configured and incorporated into your Microsoft products, including Dynamics CRM (or Dynamics 365 for Sales these days).

No matter which product you use, this is exciting stuff for CRM applications which have historically been thought of as overhead. Imagine telling your sales team that CRM can now write their emails for them!

But before announcing how smart your CRM system is to your organization, here are some things you will want to consider:

  1. You must feed the beast: The predictive analytics engines that power these tools require data for them to analyze. So, for new CRM implementations, this may take a while. Be realistic about what you can expect and when.
  2. Garbage in makes even worse garbage out: Artificial Intelligence does not resolve the age old issue of "bad data in, bad data out." Except now, there may be more risks exposed since "bad data in" could lead to bad decisions.
  3. Who’s right, who’s wrong: What if the output from the machine learning algorithms doesn’t match your rules? These instances can be taken case by case, but this is something that should be monitored by a business sponsor who understands.

Questions/comments/concerns? Give us a shout.

New Call-to-action

Topics: CRM Best Practices

SmtpClient for Quick Notifications

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

From time to time we'll need to write a quick script to mass update records in a CRM environment through the API. One of the easiest ways for a developer to do this is through LinqPad. Depending on the number of records that need to be queried and updated, the script may need to run for an extended period of time and most likely at night or on the weekend to avoid impact to end users. An easy way to get periodic status updates, without sitting at your desk monitoring the progress, is to leverage SMTPClient. SMTPClient will allow you to send yourself, and others, email status updates and notifications of any error while your script is running.

At Sonoma Partners, we use exchange online, so an example would be: 

A similar call could be made to send an error message and stack trace. This gives you the ability to fire off your script and go do something else while being notified of progress and of any errors that may occur and require your attention.

Have a question for us on this or other CRM-related matters? Drop us a note.

Topics: CRM Best Practices

Filtering Connection Roles by a Property of an Account

Today's blog post was written by Sonoma Partners' Principal Developer Argyris Anargyros and Senior Developer Jeff Young.

As part of a recent project, we had a client request to limit native and custom Connection Roles available to an Account based on a set of properties on the Account. While it is possible to filter the Connection Role field as you would any other lookup field, there is no native behavior to support filtering based on some specific property of an entity. Meeting this requirement required some custom development and, as we can see this being very useful, we are sharing the technique we developed.

The Use Case

In our case, the Account entity had been customized with a set of Yes/No fields that, if selected, would control the set of Connection Roles available to the Account, defining restrictions on how the Account could connect to other Accounts and Contacts.

Argy young 1

Figure 1: An example of the fields available to our entity. Here we have created a section on our form labelled 'Connection Role Filtering Fields' and added the fields controlling the available Connection Roles. In this example, the Connection Roles associated to fields 1, 3, 6, 7, 10 and 11 will be used to filter the Account’s available Connection Roles. The schema name for the field “Role Filter Field 1” would be new_rolefilter1.

Business logic determined the Connection Roles available to each field; the set of available Roles for the Account would be determined by which fields on the Account were selected as “Yes” and by the type of entity to which the Account was connecting.

Further, all the fields could be selected “Yes” or none could be; there could be any combination of fields.

Our first step was to determine what native functionality we could utilize, then decide how to extend it.

Filtering a Lookup

As we’ve said, CRM provides a way to filter values presented in a lookup field by JavaScript natively. Also, the Connection Roles form is just that - a form - so it’s possible to add JavaScript to it and have it run on form-related events, such as onLoad.

There are two JavaScript methods that are members of the lookup control that are utilized when applying a filter: addPreSearch and addCustomFilter.

addPreSearch is essentially an event listener that is attached to the lookup control, triggered when the lookup control is clicked. The argument for this method is the function that should run when the event is triggered. 

From within addPreSearch (and only from within addPreSearch) the addCustomFilter method can be called. addCustomFilter accepts two arguments: a subset of FetchXML which is the filter applied to the lookup and the schema name of the entity the filter is being applied to. This method is run on the lookup when the user clicks on it, which can easily be confirmed using a breakpoint on your favorite F12 tool.

It’s important to note that when using these methods, promises, or other non-synchronous methods can exit from the closure of the listener method and make applying the filter difficult to impossible. We discovered this as we have an extensive library of JavaScript tools at Sonoma Partners that we use to extend and enhance functionality of the Xrm API, including both synchronous and asynchronous use of the Org Service.

Our original implementation of this solution utilized the asynchronous Org Service methods, which gave us some problems because the promise, once invoked, had lost the context of the lookup (specifically, the closure in which the reference to the lookup had been exited). In our experience, it’s easiest to apply a filter using a sequence of synchronous calls instead of capturing the context of addCustomFilter and passing it to the promise when it runs (perhaps capturing ‘this’ and passing it as an argument to the promised method).

Our next step was to figure out some way of identifying the subset of Connection Roles to apply to the lookup filter.

Configuration Setting Entities

Configuration Setting entities are a common way of managing CRM behavior at Sonoma and elsewhere; giving System Administrators a convenient way to manage CRM behavior without editing code. In our solution for this project, we created a Configuration Entity that possessed simple key/value fields. We utilized these records to manage behavior of multiple entity scripts, just like this example.

For use with Connection Role filtering, we created some Configuration Setting records whose keys were a unique string based on our purpose and the schema name of the fields on the Account entity we wanted to control the filtering. This made the name of the record something like “Connection Filters for your_field_here”. So, if our Account entity had a field named “new_rolefilter1” and this field was checked as “Yes” we would retrieve the Configuration Setting record named “Connection Filters for new_rolefilter1.

Argy young 2

Figure 2: An example of the Configuration Settings record associated with Role Filter Field 1 (schema name new_rolefilter1)

 

To reflect the business logic the value of these records, then, were the names of the Connection Roles we want to filter by; specifically, comma separated string of the names of the connection roles, such as “Accounting,Administration,Coordination,etc…”

Strings are a convenient way to express this data as we can split them easily into an array once we’ve retrieved the record. They may not be so easy to administer, however, especially if the list of the record maintains becomes long. In this case, expanding the entity to include multiple fields would be one option which would present a more user-friendly way of managing the fields, but we would lose the programmatic convenience of getting and splitting a string and would be introducing issues with forward maintainability; adding Connection Roles would require editing this form, for example. For this reason, we went with strings.

Having all the pieces in place, now we need to bring them together.

Using the Configuration Entities to Filter Connection Roles

We attached a script to run on load of an Account form. This script retrieved the values of the fields that will control the available Connection Roles, determined which fields were set to “Yes” and then retrieved the configuration record for each one of these fields.

Using the value of each configuration record, we build an array of unique Connection Role names (some records may contain the same Connection Roles, see below) by retrieving the value of each configuration record and splitting it by a comma.

Then, using this array, we construct the Fetch XML fragment that will be applied to the lookup. The fragment is part of an ‘AND’ condition appended to the query for the lookup. Because we want to filter on a name or a set of names, we must nest the Role names we want to match against within an OR condition. The final XML looks much like below:

<filter type="and">

<filter type="or">

<condition attribute="name" operator="eq" value="Accounting"/>

<condition attribute="name" operator="eq" value="Advisory"/>

<condition attribute="name" operator="eq" value="Provisioning"/>

<condition attribute="name" operator="eq" value="Communications"/>

<condition attribute="name" operator="eq" value="Scheduling &#038 Maintenance"/>

<condition attribute="name" operator="eq" value="Logistics "/>

</filter>   

</filter>

The result of applying the filter will look similar to the below image:

Argy young 3

In sum, when we load the Connection Roles form for an Account, we:

  • We add a listener to the Connection Role lookup field.
  • When the lookup is selected, we query the account to get the set of properties that effect the Connection Roles.
  • Using this set, we query for the Configuration Records for each positive field.
  • From this query, we build an array of roles that are available to the Account.
  • From the array, we build XML that applies a filter to the lookup.

"Gotchas"

As we developed this solution, we encountered a few issues that provided some challenges.

  • Filters must be URL escaped. When testing our solution, we ran into immediate problems with the Fetch XML we were building; CRM was reporting Malformed XML. Looking closely at the XML, we noticed that custom Connection Roles created by the client contained the ampersand and forward slash characters, which are special characters in XML. In order to correctly handle these characters when applying the filter XML, they need to be replaced by their encoded HTML value (‘&’ becomes ‘&#038’ as can be seen in the example FetchXML above).
  • Make sure to remove duplicates from the filter list.
  • Methods used to filter the lookup can’t be asynchronous. Forewarned is forearmed!

We hope that this technique will help you towards your CRM endeavours.

Topics: CRM Best Practices