Categories Salesforce

Configure Omni Channel in Salesforce

#Omni-Channel can be effectively used to prioritize the work items, we can route the important work items to agents quickly. It is also used to manage the agents’ capacity so that they can be provided with the number of assignments they can handle. Omni-Channel is flexible, customizable feature, most importantly it can be configured declaratively without writing a single line of code.
You can also define which agents can work on different types of assignments. For example, you can create one group of agents to respond to leads and sales inquiries and another group that helps customers with support questions.
Most importantly, Omni-Channel take care of these assignments automatically, so that agents no longer have to pick and choose work assignments manually from the queue which definitely saves time, effort and brainpower especially for call centers.
Let’s take a look on how to configure Omni-Channel, Follow the below-mentioned steps.

1. Enable Omni-Channel

   a. From Setup, enter Omni-Channel Settings in the Quick Find box, then select Omni-Channel Settings.
   b. Select Enable Omni-Channel.
   c. Click Save.

Omni-channel settings

2. Create a service channel and routing configuration.

We work with cases for this module. So the first step is to make cases available for routing with a service channel.
   a. From Setup, enter Omni-Channel in the Quick Find box, then select Service Channels.
  b. Click New.
  c. Enter the name Cases (the API Name will auto-fill to Cases).
  d. Select Cases as the Salesforce object.
  e. Click Save.
  f. Now, Omni-Channel can route cases. The next step is to make a basic routing configuration so Omni-Channel knows how to get these cases to agents.

3. Create a Routing Configuration

  a. From Setup, enter Omni-Channel in the Quick Find box, then select Routing Configurations.
  b. Click New.
  c. Enter the name High-Priority Cases (the Developer Name auto-fills to High_Priority_Cases).
  d. Set the Routing Priority: 1.
  e. Select the Routing Model: Most Available.
  f. Set the Units of Capacity: 4.
  g. Click Save.

4. Link Your Routing Configuration to a Queue

With your routing configuration set, we need a queue to link to it. Let’s create a queue!
  a. From Setup, enter Manage Users in the Quick Find box, then select Queues.
  b. Click New.
  c. Enter the label High-Priority Cases (the queue name auto-fills to High_Priority_Cases).
  d. In the Routing Configuration field, click the Lookup icon, and select the routing configuration you just created (High-Priority Cases).
  e. Under Supported Objects, select Case in the Available Objects, and click Add to move it to the Selected Objects.
  f. Under Queue Members, in Search, select Public Groups and select All Internal Users in the Available Members list, then click Add to move it to Selected Users. Add yourself to Selected Users too.
  g. Click Save.

5. Set Presence Status for Agents

Agents need statuses so they can control when work comes in for them. Now, we create a presence status for agents to use when they want to be assigned high-priority cases.
  a. From Setup, enter Omni-Channel in the Quick Find box, then select Presence Statuses.
  b. Click New.
  c. Enter the Status Name Available – Cases (the API name auto-fills to Available_Cases).
  d. Under Status Options, select Online.
  e. Under Service Channels, Select Cases in the Available Channels, and click Add to move it to the Selected Channels.
  f. Click Save.
Now that you have a presence status, make it available to users (including yourself!).
  a. From Setup, enter Manage Users in the Quick Find box, then select Profiles.
  b. Click the name of the profile you want to enable Omni-Channel for. Let’s start with System Administrator.
  c. Hover over Enabled Service Presence Status Access and click Edit.
  d. Select Available – Cases in the Available Service Presence Status, and click Add to move it to the Selected Service Presence Status.
  e. Click Save.
  f. Repeat for any other profiles you want to use with Omni-Channel. If you plan to make new users in your hands-on org to use with Omni-Channel, repeat these steps for the Custom: Support Profile or the Standard User profile.

6. Add Omni-Channel to a Console

  a. Go to Setup | Build | Create | Apps.
  b. Under Apps, Click New.
  c. Select the Console type and click Next.
  d. Enter the App Label Omni-Channel Console (the API name auto-fills to Omni_Channel_Console).
  e. Click Next.
  f. Click Next to skip the image selection.
For Navigation Tab Items, in the Available Items, select Cases, Home, Accounts, and Contacts, and click Add to move it to the Selected Items.
  g. Click Next.
Make Cases and Contacts open as subtabs of Account Name (Account).
  a. Click Next.
  b. Make this console visible to all profiles, and make it the default for Custom: Support Profile, Standard User, and System Administrator.
  c. Click Save.
  d. Now, we’ll add Omni-Channel as a console component. From Apps page, click Edit next to Omni-Channel Console.
  e. Under Choose Console Components, in the Available Items, choose Omni-Channel, and click Add to move it to the Selected Items.
  f. Click Save.
Time to Test our Omni- Channel:
  a. Go to Cases Tab
  b. Click New.
  c. Select the Priority High.
  d. Select the Case Origin Web.
  e. Enter the Subject: Website is down
  f. Enter any description you want.
  g. Click Save.
Because you created the case, you’re already the case owner. Let’s go to the console to route it.
  a. Use the app launcher to select Omni-Channel Console.
  b. From the console, click Omni-Channel in the console footer to open up the Omni-Channel widget. Set your status to Available – Cases.
  c. Go to the Cases console tab and select All Open Cases from the dropdown.
  d. Select the checkbox next to case you created and click Change Owner.
  e. Select Queue, and use the lookup to select High-Priority Cases.
  f. Click Save.
You get a notification in the Omni-Channel widget. Go ahead and accept it; the case opens in a tab in your console.

Decline a Work Request in Omni-Channel:

If we are assigning the task to agents, there has to be little more freedom to let them choose what they work on. It also means that if they’re assigned something that isn’t right for them, they can quickly decline it and move on. The work has a better chance of finding the right agent, and the agent who declined it can get back to the work that’s right for them.
Let’s pretend that in addition to your High Priority Cases queue, you have another queue called Cases. So, work that comes through the Cases queue is less urgent than the High-Priority Cases queue. What happens when you’re an agent assigned to the High-Priority Cases queue, and you receive a work request for something like “A customer can’t find our FAQ page”?
That isn’t exactly work-stopping, is it? To make sure high-priority work gets the attention it deserves, let’s turn on work declining, and create a reason “Incorrect queue.” This way, the supervisor will know when there’s low-priority work sludging up the high-priority queue.

1. Create the Decline Reason

  a. From Setup, enter Omni-Channel in the Quick Find box, then select Presence Decline Reasons.
  b. Click New.
  c. Enter the name: Incorrect queue (the Developer Name auto-fills to Incorrect_queue).
  d. Click Save.

2. Add Decline and Decline Reasons to Your Presence Configuration

  a. From Setup, enter Omni-Channel in the Quick Find box, then select Presence Configurations.
  b. Click Edit next to Default Presence Configuration.
  c. Select Allow Agents to Decline Requests.
  d. Select Allow Agents to Choose a Decline Reason.
  e. Under Assign Decline Reasons, in the Available Decline Reasons, choose Incorrect queue, and click Add to move it to the Selected Decline Reasons.
  f. Click Save.
Perfect! Now you’re able to decline a work request in the console, and you can indicate that the work is in the wrong queue.
Let’s try it out. We need to create a case and then route it with Omni-Channel, just like we did last time.

3. Create a New Case

  a. Go to the Cases tab.
  b. Click New.
  c. Select the Priority Low.
  d. Select the Case Origin Web.
  e. Enter the Subject: A customer can’t find our FAQ page
  f. Enter any description you want.
  g. Click Save.

4. Route the New Case and Decline It from the Omni-Channel Widget

  a. Use the app launcher to select Omni-Channel Console. If the first case is still open in your console, you can ignore it.
  b. From the console, click Omni-Channel in the console footer to open up the Omni-Channel widget. Set your status to Available – Cases.
  c. Go to the Cases console tab and select All Open Cases from the dropdown.
  d. Select the checkbox next your new case and click Change Owner.
  e. Select Queue, and use the lookup to select High-Priority Cases.
  f. Click Save.
  g. You get a notification in the Omni-Channel widget. Click Decline.
  h. Click Select a Decline Reason and Incorrect queue.
  i. Click Confirm. The request disappears from your Omni-Channel widget.

We request our readers to try it and let us know the feedback on the same.

Categories Salesforce

How & What: Salesforce Path

One of the main concerns of Salespersons or anyone using Salesforce is not having a complete picture of what stage a lead/opportunity/order/case is in the business process and what needs to be done at different stages to progress it further. A standard page layout doesn’t have the provision to be able to highlight this information in a cleaner way. This is where Salesforce Path (or simply called Path) comes in and addresses the issue beautifully.

Some of the features of Salesforce Path are:

  • Visual Representation of Business Process e.g. Sales process, service ticket process, lead lifecycle.
  • Path helps in progressing through the stages in an easier, efficient and faster way.
  • Available for Lightning Components, Lightning Communities.
  • Can be setup based on picklist values and available for record types.
  • Can be used on Standard object like Opporutinities, Leads, Accounts, Contacts, Campaigns, Contracts, Orders and all custom objects.

Path View

Path showcases all the stages the lead/opportunity/order has to progress through and also at which stage currently they are at.

For every stage, Path showcases the key fields that are required to be filled in and also displays the important guidance required to successfully pass that particular stage. All this can be configured by a Salesforce administrator in the setup. In the Guidance for success section, you can include images, links as well.

Enable Path

Go to Setup → Path Settings → Enable.

If “Remember User’s Path Preferences” is selected, the path remembers its previous state.

Configure Path

To Create a New Path.

Go to Setup → Path Settings → Click New Path

Just choose the object, record type and the picklist field that you want the Path to be configured on.

In step 2, drag and drop the key fields and also the guidance for success for each of the picklist stage values. Save.

And finally, drag and drop the new Path that you created onto the page layout. That’s all.


When you create paths, you decide:

  • Which fields and content appear for your users at each step in the process?
  • What good advice, helpful reminders, useful links, and best practices to include at each step.
  • How many different paths to provide to your users. For example, you might provide different paths for inside sales and outside sales, or different paths for delivery status of different products or services.
  • When paths to be made available to users.

Please feel free to contact us in case of any questions or concerns. Your feedback is invaluable to us.

Categories Salesforce

Salesforce Lightning Flow

What is Lightning Flow?

Lightning Flow is a new Lightning Platform service that empowers any business to create and extend the power of process automation to any customer or employee experience. With Lightning Flow, you can create guided, visual processes with Lightning components and easily add them to a record, app, portal, and console.

Wait, I think I know Visual Flows

Yes, you may also have heard the term Visual Workflow but that’s a retired product name for designing, managing, and running flows. Visual Workflow has been superseded by Lightning Flow.

Okay. Is Flow and Lightning Flow the same?

Well, here are the 3 definitions to clarify everything about Flows.

  • Lightning Flow: the product that encompasses building, managing, and running flows and processes.
  • Cloud Flow Designera point-and-click tool for building flows.
  • Flow: an application that automates a business process by collecting data and doing something in your Salesforce org or an external system.

In short, the Lightning Flow product includes a tool called the Cloud Flow Designer which helps you to create Flows.

Lovely. How is Lightning Flow different?

Using the power of low-code, drag-and-drop functionality to customer engagement, Lightning Flow delivers an innovative new way for businesses to realize the benefits of process automation: including reduced wait times for customers, digitized business workflows, and improved team productivity.

Lightning Flow brings together several innovations native to the Lightning Platform, including:

  • Lightning Flow Components: Leverage reusable Lightning components to design rich flow screens and guided, visual processes.
  • Integrated Processes: Orchestrate workflows and 3rd party services with Platform Events, External Services, and Local Actions.
  • Process-Driven Apps: Embed Lightning Flow processes into every customer and employee app experience using Lightning App Builder and Community Builder.

Got it. How to enable Lightning Flow?

Go to Setup → Process Automation Settings → Enable Lightning runtime for flows

That was simple. How does a Flow look like now?

Well, it has the new Lightning skin! Here’s a simple feedback capturing flow.

How does your Lightning Flow look?

Quick Account creation flow on your homepage. Isn’t it cool?

Salesforce Lightning Flow Sample.

It is, indeed! What’s next?

Exciting news. Lightning Flow has got some major upgrades with a brand new, faster, easier, efficient tool for building flows – Lightning Flow Builder to replace the Cloud Flow Designer. Watch out for our insights on it in our future blog posts.

We would be glad to hear feedback from you and answer any questions.

Additional Reading: Cloud Flow Designer

Categories Salesforce

How & What: Lightning Bolt Solution

In this blog post, we are going to explain how to create a Lightning Bolt Solution and distribute it. Before that let’s see what a Lightning Bolt Solution is.

Do you have at least one Lightning Community template, a custom app, or a flow category that you want to distribute? Then you’re ready to create a Lightning Bolt Solution. With Lightning Bolt Solutions, you can combine custom Lightning apps, business process flows, and Lightning Community templates and pages in easy-to-build, distributable packages.

Lightning Bolt for Salesforce: Build Once, Then Distribute and Reuse

Lightning Bolt for Salesforce lets you quickly build and distribute industry-specific Lightning Bolt Solutions to jump-start new org capabilities. Save time by building once and then reusing. Whether it’s for your own org or you’re a consulting partner or ISV, you can reduce the time required to implement solutions and cut development costs.

Bolt Solutions address the needs of specific industries and functions with tailored apps and business processes. They include:

  • Custom Apps
  • Flow Categories
  • Community Templates


You’re an ISV who builds a custom insurance agent app. The app includes automation to create coverage estimates and automatically notify customers of the results. Using a Lightning Bolt Solution, you can easily bundle your app and business process flows into a single package. Distribute the package to your customers to install in their Salesforce orgs, or market the solution on AppExchange.


From Setup, enter Lightning Bolt Solutions in the Quick Find box, and select Lightning Bolt Solutions. Click on the button “create the first one”.

On the Details and Branding page, enter information about your solution. For example, enter your company and solution names, and list the solution’s key features. Click Next.

On the Solution Highlights page, add any combination of Community templates, flow categories, and custom apps. Click Next.

Review the Summary page, and click Finish. The new Lightning Bolt Solutions is now ready for distribution.

Review Summary and Create Lightning Bolt Solution.


You can upload the package to AppExchange to share or sell the solution.

A package is a container for something as small as an individual component or as large as a set of related apps. Packages come in two forms—managed and unmanaged. It is recommended to use only managed packages to avoid naming conflicts with other packages in your customer’s org or your own. To create a managed package, use a Developer Edition org.

From Setup, enter Packages in the Quick Find box, and then click Packages. To package a Lightning Bolt Solution, select Lightning Bolt Solution as the component type, and select the solution that we built.

Add Lightning Bolt Solution to the package.

Upload the package. Then distribute it on AppExchange, or share the link privately with your clients, customers, or partners.

Categories Salesforce

How & What: Salesforce Platform Events (Part 1)

Platform Events

Platform Events are based on Event-Driven Architecture(EDA). EDA is a framework to define the production, detection, consumption of, and reaction to events. The two components of EDA are: event creators and event consumers. Event creators responsibility is to just create the event and Event consumers responsibility is to know when the event occurs and take an action. In EDA, no requests need to be made to a server to obtain information about a certain state. Instead, a system subscribes to an event channel and is notified whenever new states occur. Any number of consumers can receive and react to the same events in near real time.

Use Cases

Salesforce and external systems communicate through platform event messages.

  • News agency sends events to subscribed clients with the latest breaking news about traffic and road conditions in a mountain retreat destination
  • A status change in Salesforce notifies external order fulfillment apps of a product shipment order.
  • An external product app notifies Salesforce of merchandise returns

Use platform events in the following cases:

  • To send and receive custom event data with a predefined schema
  • To publish or subscribe to events in Apex
  • For the flexibility of publishing and processing events on and off the Salesforce platform


A platform event is a special kind of Salesforce entity, similar in many ways to an sObject. An event message is an instance of a platform event, similar to how a record is an instance of a custom object. Unlike with custom objects, you can’t update or delete event records, or view event records in the Salesforce user interface.

Create Platform Events

From Setup, enter Platform Events in the Quick Find box, then select Platform Events.
On the Platform Events page, click New Platform Event.
You define the custom data that platform events contain. Just like custom objects, you define platform events in Salesforce Development. You create a platform event definition by giving it a name and adding custom fields.
Let’s say CloudFountain wants to notify its subscribers of its product launches. We’ll create a Platform event object called CloudFountain and a text field named Description to store the message.
When you create a platform event, the system appends the __e suffix to create the API name of the event. In our example, for the CloudFountain event, the API name is Cloud_Fountain__e. The description field still is as usual Description__c

Publish Platform Events

If your app is on the Salesforce platform, you can publish events using an Apex method or with declarative tools, such as Process Builder or the Cloud Flow Designer. If your app is an external app, you can publish events using Salesforce APIs.

Publish Through Apex

To publish more than one event in the same call, add your events to a list of events, and pass the list to the EventBus.publish() method. The output of this method is an array of Database.SaveResult objects

Publish Through API

Endpoint to call
JSON Request Body


When you publish platform events, DML limits and other Apex governor limits apply.

Subscribe to Platform Event Notifications with Apex Triggers

With platform events, the process is similar to database triggers. You simply write an after insert Apex trigger on the event object Cloud_Fountain__e to subscribe to incoming events. Triggers provide an auto subscription mechanism in Apex. Triggers receive event notifications from various sources whether they’re published through Apex or APIs. We will see this in “How & What: Salesforce Platform Events (Part 2)”
Platform events support only after insert triggers. The after insert trigger event corresponds to the time after a platform event is published. After an event message is published, the after insert trigger is fired.
As always,  @CloudFountain, your feedback would be invaluable. Please feel free to contact us in case of any questions or concerns.