Sonoma Partners Microsoft CRM and Salesforce Blog

Dreamforce 2016 Recap

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

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

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

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

Welcome to Trailhead

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

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

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

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

Bulk API v2

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

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

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

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

Salesforce DX

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

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

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

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

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

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

Lightning Component Builder

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

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

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

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

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

That’s a wrap! Dreamforce troy 5a

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

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

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

New Call-to-action
Topics: Salesforce

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

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

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

Ribbon Customizations

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

Mdearing 1

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

Mdearing 2

Less Intrusive Deployments

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

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

Three Steps to CRM Success

Topics: Microsoft Dynamics CRM 2016 Microsoft Dynamics CRM Online

Updating Your Quote from Your Project Plan in PSA

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

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

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

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

Trent psa 1

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

Trent psa 2

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

Trent psa 3

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

Trent psa 4

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

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

Project record:

Trent psa 5

Quote Line record:

Trent psa 6

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

New Call-to-action


Topics: Microsoft Dynamics CRM 2016 Microsoft Dynamics CRM Online

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


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

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

Here is how some Sonomans deliver quality work:

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

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

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

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

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

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

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

Topics: Careers at Sonoma

Enough Chit-Chatter: Replacing Chatter Desktop

Today's blog post was written by Corey O'Brien, VP of Development at Sonoma Partners.

The Need for Change

Lately, Salesforce has put Chatter Desktop into maintenance mode.  The last few updates have only consisted of replacing old certificates – just enough to keep it running.  In addition, it is built on top of Adobe AIR, which has its own runtime that frequently prompts users to update it.

Defining Our Vision

With that in mind, several of us set out to build a new desktop client with the following high level goals:

  • Support for Windows and Mac
  • Modern and clean design
  • Add features missing from Chatter Desktop
    • Searching posts and comments
    • Indicate which posts are read/unread
    • Support for polls (both creating  and voting
    • Allow multiple feeds to be opened at once
  • Support configurable popup notifications
  • New versions should auto-install seamlessly
  • Does not need to be mobile friendly (Salesforce1 is a great mobile client)

Design wise we drew a lot of inspiration from TweetDeck, which allows multiple columns to be viewed at once, or it can be collapsed into a single column view.  Below is an example of the current working version.


Bringing the App To Life

We decided to build the app as a Chrome App, which would help solve the cross platform and auto-updating goals.  The app is written in JavaScript and uses React, Redux and several other frameworks.

One of the challenges we faced building the application was keeping the content up-to-date, without hitting the Chatter API usage limit.  This problem was more difficult as users added columns.  To address this, we first added code to detect when the user was idle (not using the mouse or keyboard).  During idle periods, we wouldn’t poll for changes.  In addition, we started only auto-polling the main News column (which is required), only when that feed had an update would we auto-update the other columns.  With these changes we have been able to poll every minute without running into usage limits.

Future Roadmap

With Google’s announcement to discontinue support for Chrome Apps on Windows and OS X, we’ve started to look at repackaging the app as an Electron app.  Most of the code should be portable, but it will require a server for simple installation and distribution.

There are also a lot of little features that haven’t made their way into the application yet, like editing and deleting posts, but due to the use of modern frameworks those are fairly trivial to add.

Final Thoughts

This has been a very rewarding journey so far as it has gotten us more exposure to the Chatter API and HTML/JavaScript desktop application development.  In addition, end users have been thrilled to have some fresh Chatter features back on their desktops and the reviews have been glowing.

Are you a Sonoma client and interested in trying it out?  Talk to your team about getting early access!

New Call-to-action

Topics: Salesforce