Categories Salesforce

Salesforce: Protecting PHI/PII data in Healthcare

Data security is the most important and most difficult aspect when it comes to Healthcare organizations, especially when ensuring the systems remain HIPAA complaint and maintain PHI/PII information safe. This effort is no less easy when you throw SaaS application in to mix. We will try here to address some common pitfalls and easy solutions to ensure that the clients do not falter on these compliance matters when it comes to Salesforce.

Let’s get some terms cleared out before we proceed with our approach:

Salesforce’s default HIPAA compliance features

  • Salesforce is a Business Associate under HIPAA, which requires them to apply safeguards and requirements that are outlined by HIPAA security Rule. This means that the underlying mechanism applied by Salesforce in their offering is HIPAA compliant.
  • Salesforce has defined TLS 1.1 as the minimum standard security protocol and by default requires HTTPS to access standard orgs.

Salesforce’s Customizable Features

Apart from these default features, Salesforce also provides various customizable features to allow customers to apply tighter security controls:

  • Customize user session security: Logout idle users
  • Disable caching usernames: Enforce users to enter username every time they login
  • Prevent PHI/PII information in sandboxes through refresh and cloning: We will touch this topic in detail below.

Salesforce Shield Platform Encryption

Salesforce provides add-on security features like Shield Platform Encryption:

CloudFountain’s custom approach to security. When we work with Healthcare clients, apart from applying the above practices and features, we apply additional solutions to ensure that there is no leakage when it comes to full sandbox refresh or cloning sandboxes.

Introducing SandboxPostCopy Interface

With Spring ’16 release, Salesforce introduced SandboxPostCopy interface. We have tried to leverage this interface to provide additional security when it comes to sandbox refresh and cloning.

In the below snippet, we have defined class CreateDummyEmails which implements the SandboxPostCopy interface:

global class CreateDummyEmails implements SandboxPostCopy {

view rawCreateDummyEmails.cls hosted with ❤ by GitHub

The init function calls two functions:

  • findEmailFields: Finds all the email fields in all the SObjects
  • cleanEmailFields: replaces the emails fields with PHI compliant email addresses
global static void init() {
// Map of sObject and list of email fields
Map < String, List < String >> soEmailFieldMap = findAllEmailFields();
// create dummy emails on Email fields found in the sObjects

view rawinit.CreateDummyEmails.cls hosted with ❤ by GitHub


public static Map < String, List < String >> findAllEmaiLFields() {
Map < String, List < String >> mSObjEmailFields = new Map < String, List < String >> ();
// Iterate through all SObjects
for (SObjectType sObjType: Schema.getGlobalDescribe().values()) {
DescribeSObjectResult sObjDescribe = sObjType.getDescribe();
// Avoid objects that cannot be queried or updated.
if (!sObjDescribe.isQueryable() || !sObjDescribe.isUpdateable()) continue;
String sObjName = sObjDescribe.getName();
// Iterate through all fields
for (SObjectField sObjField: sObjDescribe.fields.getMap().values()) {
DescribeFieldResult sObjFld = sObjField.getDescribe();
// Consider only Email fields
if (sObjFld.getType() != Schema.DisplayType.EMAIL) continue;
if (!sObjFld.isFilterable()) continue;
// Add all Email fields in the map.
if (mSObjEmailFields.containsKey(sObjName)) {
} else {
mSObjEmailFields.put(sObjName, new List < String > {
return mSObjEmailFields;

view rawfindAllEmaiLFields.CreateDummyEmails.cls hosted with ❤ by GitHub


public static void cleanEmailFields(Map < String, List < String >> mSobjField) {
// Iterate through SObject->Email Fields
for (String sObjName: mSobjField.keySet()) {
// Build a list of all fields that need to be queried
List < String > lstEmailFields = mSobjField.get(sObjName);
// Generate a SOQL query to get records with non null emails
String soql = createSOQL(sObjName, lstEmailFields);
List < SObject > sObjRecords = new List < SObject > ();
// Iterate through SObject records
for (SObject sObjRecord: Database.query(soql)) {
// Iterate through email fields found on SObject and replace with dummy values
for (String strField: lstEmailFields) {
String strEmail = (String) sObjRecord.get(strField);
if (String.isEmpty(strEmail)) continue;
sObjRecord.put(strField, strEmail.replaceAll(‘\W’, ‘_’) + ‘’);
update sObjRecords;

view rawcleanEmailFields.CreateDummyEmails.cls hosted with ❤ by GitHub

This is just a glimpse into a more sophisticated solution. Using custom metadata, you can use the same function to create dummy values on other fields e.g. patient name, address, phone numbers etc.

We would love to hear your feedback.

Categories Salesforce

How & What: Macros in Salesforce

Enabling Feed Tracking

In Spring 16 edition of Salesforce a feature known as macros was released in Salesforce Classic and was later made available in the Lightning experience. Macros are very useful as they reduce the precious time of the clients and the admin to perform a task.

Macros automates repetitive tasks on single or multiple records and can be used either by admin or the client, like you need to send emails or update case status, you can simply do this task with the press of a button and since it is a no code solution even a non technical person can create them. In simple words a Macro is a set of instructions that tells the system how to complete a task. Since, time is money for support agents who handle multiple activities at a time.

Now creating Macros is quite easy but the process is different for Salesforce Classic and Lightning so first we’ll discuss the process in the Classic variant then we’ll move on to the Lightning variant.

In Salesforce Classic following steps need to be performed in order to create a macro:

  1. Enable feed tracking
  2. Create a feed based page layout
  3. Setup publisher actions
  4. Add macro browser to console application
  5. Enable required permissions

While in Lightning Experience following steps need to be performed in order to create a macro:

  1. Create Macro
  2. Add logic in instructions

Salesforce Classic:

For this example we will be using the “Opportunities” object.

1. Enabling Feed Tracking:

To enable feed tracking click on, Setup→Customize→Chatter→Feed Tracking, or you can simply just search feed tracking in the quick find/search box on the left. Now select the “Opportunities” object and check the “Enable Feed Tracking” check box on the top, after this you just need to select in which fields Feed Tracking should be enabled.

Note: Up to 20 fields can only be selected for Field Tracking of an object

2. Creating a Feed Based Page Layout:

If the feed based page layout has not already been created for our “Opportunities” object then we can simply create it by going to, Setup → Customization → Opportunities → Page Layouts → Create New.

3. Setting up Publisher Actions:

If need to use an action in macros then first we need to add that action to the object page layout so for this we will add an email action to the “Opportunities” object by drag and drop method, as shown below in the screenshot.

4. Adding Macro Browser to Console Application:

This is the last step required to set up macros. Go to Setup→Create→Apps→New Console app. This will create a new console app and you only need to add the “Macro browser” widget as shown below.

5. Enabling Required Permissions:

This is an additional step in which the admin can allow the support agents to edit or create their own macros but for that permission needs to be granted so that we can specify which user can do what. To do this the user should have the following permissions available:

    1. To view Macros: “Read” permission on macro object
    2. To create and edit Macros: “Create” and “Edit” permission on macro object

These permissions are granted by going to Setup→Profiles→Select and select the profile for the user who can view, create or edit Macros. Once the profile is selected go to “Object Settings” and search for Macros and grant permissions as required.Once the above actions have been completed, you now need to setup a macro so that it can be run, to do that go to the Console app on which the “Macro Browser” widget was made available and you should see something like this in the bottom right corner.

Click on Macros and a window should appear as below now click on +Create Macros button

Now a New Macro window will open in which you will give the Macro a name and a description which is optional, after this you need to add a instruction to it in the “Macro Instruction” panel, this will show the system what to do the Macro is run and then just click Save.

Note: Multiple instructions can also be added as per requirement

In the following screenshot an example of Macro instructions is given which will create a new task for the “Opportunities” object.

Now go to the Console app where the Macro widget has been added and open an active opportunities tab. Now click on Macro and search for the Macro you just created now hit Enter or press the play button to run it.

Lightning Experience:

1. Creating a New Macro:

In your Lightning app, open a record. In its utility bar click on “Macros”, and then click + or “Create Macros”. Now just enter the name, description, folder and select the object the Macro applies to then click save

2. Adding Instruction to the Macro:

Now click Edit Instructions and the Macro builder page will open where (1) will display the canvas with a sample record page for the object you selected and (2) contains an instructions tab and a details tab for your Macro.

Now you can also add logic to your Macros by clicking Add Logic which will navigate you to the screen below

Logic is a logical expression used to evaluate the action or actions performed by a Macro. In simple terms it is a check performed to see if a Macro can execute its instruction(s) or not.

When you’re done with your Macro just click save button.

Bulk Macros:

Bulk macros are used to perform instruction/action(s) on multiple records. To do this you first need to grant “Run Macros on Multiple Records” option (available only in Salesforce Classic). Bulk Macros are created as follows:

1. Create a macro.

2. Add the instructions for the macro.

  1. Select a context for the macro. The context specifies the object that the macro interacts with. For example, selecting Select Active Tab tells the macro that it’s performing an action on the active case tab in Case Feed.
  2. Click Done. After every instruction, click done to move to the next line.
  3.  Select the publisher that the macro interacts with. For example, selecting Select Email Action tells the macro to interact with the Email Publisher in Case Feed.
  4. Select the action that you want the macro to perform. You can select Apply Email Template and specify which email template to use.
  5. Finally, select Submit Action to tell the macro to perform these instructions.

3. Save the macro.

They are denoted with a green blot and double lines

Irreversible Macro:

Some actions performed by Macros can’t be undone, such as sending outbound emails, updating a case status. These Macros are called Irreversible Macros. For these Macros you must enable User Can’t Undo permission to create, edit, and run macros that contain instructions for performing irreversible actions.

To help you identify irreversible macros, look for these icons.

  • In Salesforce Classic: 
  •  In Lightning Experience: 

Share/Organize Macros and Quick Text in Folders

Tracking macros and quick text can be tricky, yet it had been made easier to organize these tools into logical groups. When you enable folders for macros and quick text, you also allow your users to share them with other people. Previously, you could only share macros and quick text in Salesforce Classic.

Where: This change applies to Lightning Experience in Professional, Enterprise, Performance, Unlimited, and Developer editions. Folders for macros and quick text aren’t supported in Essentials.

Who: To create a folder for macros or quick text, a user needs Create permission on the object. To share a folder for macros or quick text, a user must be the owner of the folder or have Manage access on the folder. Admins and other users with Modify All permission on the macros or quick text object can also manage folders.

Why: Folders help spread productivity. Say that a user is a whiz at macros and created a bunch to work with cases about a certain product. That user can share those macros with others using a folder—now all your agents are macro wizards!

Here’s what users can do in the updated browsers.

Create items right in the utility or browser:

(1). Change the view to see all folders or recent items.

(2). Navigate using the folder path breadcrumbs at the bottom.

When folders are enabled for macros and quick text, the object home displays a folder view instead of a list view.

Users can view all folders, only the ones that they created, or ones that were shared with them

(1). To share a folder, use the dropdown menu next to the folder, and click Share

Users can create up to 3 subfolders in a folder, and subfolders can contain a mix of folders or individual items. However, you can only share the first-level folder, called the root folder. Subfolders can’t be shared.

How: Enable folders for macros and quick text on the Macro Settings and Quick Text Settings pages in Setup. After you enable folders, the macro utility and quick text browser are updated.

Sharing settings on folders override sharing settings on individual items. If you shared macros and quick text in Salesforce Classic, those settings are ignored after this preference is enabled. After enabling this preference, we recommend that you move existing items into folders and share those folders with your users. If an item isn’t in a folder, only the owner, creator, and admin have access. If you decide to disable this preference later, folder sharing is ignored and individual sharing settings apply.Keep the following in mind when enabling folders.

  • For new orgs, the Folder field is added to the macro and quick text page layouts by default. For orgs created before Winter ’19, add the Folder field to these layouts manually.
  • To create and manage quick text and macros, give your users create, edit, and delete permission on the quick text and macros objects using a permission set or through their profile.
  • We recommend that you don’t use split view for macros and quick. After folders are enabled, split view displays the folder list view, which isn’t optimized for split view.

Hope it helps you save time and move along with your rapidly growing IT needs. As always we would be very glad to hear your feedback.Good luck!!!

Categories Salesforce

Platform Events Vs. Push Topic Vs. Change Data Capture

Platform Events Vs. Push Topic Vs. Change Data Capture

Today the topic under discussion is the difference between “Platform Events”, “PushTopic Events” and “Change Data Capture”, but before we discuss the difference we should first understand that what is a event and what is a event driven software architecture?

Understanding Event-Driven Software Architecture:

Event is basically a thing that happens or takes place, especially one of importance. In Salesforce events are quite useful since they help both the admin and client, e.g. has the assigned task been completed or not? Basically these events notify the admin or the client which helps keep the business running without having them to confirm from someone else(i.e. it saves time).

The paradigm of event-based communication revolves around a publisher-subscriber model—a sender broadcasts a message that one or more receivers capture. It’s like radio transmission—a transmitter tower broadcasts a radio signal, and receivers get the signal if they’re tuned to the right frequency. Much like radio transmission, event-based communication flows from the sender to the receiver. Events get sent whether or not receivers are listening, and receivers don’t acknowledge it when they receive an event. Event-based communication takes place in real-time—or, more accurately, in near-real time.

Before we go any further lets define the components of event-driven architecture:


A change in state that is meaningful in a business process. For example, placement of a purchase order is a meaningful event, because the order fulfillment center expects to receive a notification before processing an order.

Event message

A message that contains data about the event. Also known as an event notification. For example, an event message can be a notification about an order placement containing information about the order.

Event producer

The publisher of an event message over a channel. For example, an order placement app.

Event channel

A stream of events on which an event producer sends event messages and event consumers read those messages. Also called an event bus in Salesforce.

Event consumer

A subscriber to a channel that receives messages from the channel. For example, an order fulfillment app that is notified of new orders.

The following diagram illustrates an event-based software architecture.

Unlike request-response communication models, software architecture built on an event-driven model decouples event producers from event consumers, thereby simplifying the communication model in connected systems. 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, which come almost in real-time.

Now that we’re done with the basics of events and event-driven software architecture, we can easily now come to our main topic that is “Platform Events Vs. CDC Vs. PushTopic Events”.

Platform Events:

First of we’ll start with platform events, by defination,

“Platform events enable you to deliver secure, scalable, and customizable event notifications within Salesforce or from external sources via a Message bus”

These Events are based on a publish-subscribe architecture. Platform event fields are already defined in Salesforce and are used to determine the data that you send and receive. They can be published and subscribed to via Apex in addition to the APIs. Platform Events provide the defined notification structure of a PushTopic with a more flexible model than Generic Streaming for raising and subscribing to the events, which means that it’s kind of like the best of both worlds. The events are kept on the bus for a duration of 24 hours so that if the user comes online after sometime he/she can still have access to updates happened during the outage time.

Platform events are a first class object, that means you can setup multiple fields and can have your own structure to publish events. But since they are fired manually so the additional responsibility to manage scenarios for platform events, where SF transaction failed but event has been pushed to Event bus, is added.

Maximum number of platform event definitions that can be created in an org
UE: 100 EE: 50 All other editions: 5

For more information on Platform events checkout: How & What: Salesforce Platform Events (Part 1)

PushTopic Events:

PushTopic Events are basically a part of streaming API events and can be defined as

“PushTopic events track field changes in Salesforce records and are tied to Salesforce records.”

Generally streaming API are used to update UI components. The event notification of a pushtopic event is based on the configured query and event occur they cannot be configured manually. You also have to rely on object fields associated with a query, i.e. multiple fields cannot be used instead only the fields part of a query can be used. In streaming API’s the data was lost when the user got offline but this was changed when Durable PushTopic Events were introduced. The updates are managed by the system.

The generation of PushTopic notifications follows this sequence.

  1. Create a PushTopic based on a SOQL query. The PushTopic defines the channel.
  2. Clients subscribe to the channel.
  3. A record is created, updated, deleted, or undeleted (an event occurs). The changes to that record are evaluated.
  4. If the record changes match the criteria of the PushTopic query, a notification is generated by the server and received by the subscribed clients.

Maximum number of topics (PushTopic records) per org
UE: 100 EE: 50 All other editions: 40

Change Data Capture:

Now finally we move onto the CDC or the Change Data Capture events which are the newest edition of the streaming events offered on the Lightning Experience. So basically a Change Data Capture event, or change event, is a notification that Salesforce sends when a change to a Salesforce record occurs as part of a create, update, delete, or undelete operation. The notification includes all new and changed fields, and header fields that contain information about the change.

Use change events to:

  • Receive notifications of Salesforce record changes, including create, update, delete, and undelete operations.
  • Capture field changes for all records.
  • Get broad access to all data regardless of sharing rules.
  • Get information about the change in the event header, such as the origin of the change, which allows ignoring changes that your client generates.
  • Perform data updates using transaction boundaries.
  • Use a versioned event schema.
  • Subscribe to mass changes in a scalable way.
  • Get access to retained events for up to three days.

The following table compares the features offered by each streaming event

Categories Salesforce

How & What: CMS & Salesforce

How & What: CMS & Salesforce

Why use CMS?

By definition provided by Wikipedia:

“A content management system (CMS) manages the creation and modification of digital content.”

To understand why we use a CMS we first need to understand the importance of digital content that is created with the help of CMS. Digital content is basically the content being provided on a website by the owner of that website or company, it is arguably the most important part of the digital marketing efforts as it not only helps build trust and connect with the target audience, but also acts as fuel for other marketing techniques. Hence, it is important to give it the attention it deserves.

Now the reason why content management systems are used is because they can help a content writer create specialized content without having to write a single piece of code, because if a content writer started concerning himself/herself with how to code their content, to make it seem visually appealing it would require a lot of time as he/she would have to learn the new technologies first and creating a good website requires knowledge of different programming languages and their frameworks, to save time and get rid of this huge learning phase, in simpler terms to shorten the time to provide exclusive and specialized content which is visually appealing a content management system is used.

What is a CMS?

A content management system, usually abbreviated as a CMS, is a software which is used to help users create, manage and modify digital content without the need of specialized technical knowledge. In simpler language, a content management system is a tool that helps you build a website without needing to write all the code from scratch (or even know how to code at all). Instead of building your own system for creating web pages, storing images, and other functions, the content management system handles all that basic infrastructure stuff for you so that you can focus on more forward-facing parts of your website.

The picture below will show a graphical representation of the tasks performed by a CMS,

These systems typically support multiple users in a collaborative environment, allowing to perform document management with different styles of governance and workflows. Usually the content is a website (or part of it) and the term commonly refers to web content management systems. Web content may include text and embedded graphics, photos, video, audio, maps, and program code (such as for applications) that displays content or interacts with the user. By their nature, CMSs support the separation of content and presentation.

CMSs are typically used for the following things:

Enterprise Content Management (ECM): An ECM facilitates collaboration in the workplace by integrating document management, digital asset management and records retention functionalities, and providing end users with role-based access to the organization’s digital assets.

Web Content Management (WCM): A WCM facilitates collaborative authoring for websites. ECM software often includes a WCM publishing functionality, but ECM webpages typically remain behind the organization’s firewall.

What Makes up a CMS?

Speaking on technical terms a CMS is made up of two core components that are:

  • A content management application (CMA) – this is the part that allows you to actually add and manage content on your site (like you saw above).
  • A content delivery application (CDA) – this is the backend, behind-the-scenes process that takes the content you input in the CMA, stores it properly, and makes it visible to your visitors.

These two components are what makes your website easy to maintain.


HTML stands for Hypertext Markup Language and is the standard language that is used for creating websites or web applications, by programmers, used with a variety of different languages such as CSS, JS and many more, for the reason of styling and making the content visually appealing. Whereas when using a CMS is similar to using Microsoft Word or software’s similar to it, since we have used these types of software’s for a long time it is easier to work with them and understand them. Now for a visual differentiation between a CMS and an HTML we look at the paragraph below.

Let’s start with creating a piece of content. Without a content management system, you’d need to write a static HTML file and upload it to your server (sounds complicated, right?). With a content management system like WordPress, you can just write your content in an interface that looks a bit similar to Microsoft Word:

From the above picture of WordPress, the simplicity can be seen now comparing this with HTML code as shown below:

Now we can see that working in WordPress provides simplicity and saves time rather than writing a HTML static code to do the same thing which is not understandable by a non-technical person. Now we compare uploading media for this example we’ll consider that the media is an image file now in WordPress:

While in HTML:

Hence, we can see that for a person without any specialized knowledge in programming languages it is much easier to create content in WordPress rather than learning HTML and CSS, and other frameworks.

What Features Does a CMS Provide?

Features may vary between different CMS software’s but the core features that are common among them are:

  • Intuitive indexing, search and retrieval features index all data for easy access through search functions and allow users to search by attributes such as publication dates, keywords or author.
  • Format management facilitates turn scanned paper documents and legacy electronic documents into HTML or PDF documents.
  • Revision features allow content to be updated and edited after initial publication. Revision control also tracks any changes made to files by individuals.
  • Publishing functionality allows individuals to use a template or a set of templates approved by the organization, as well as wizards and other tools to create or modify content.

CMS may also provide one-to-one marketing tools, they are used to provide user-specific content, for example a customer of the website will be provided recommended content or his/her homepage will be styled according to his history being recorded (i.e. search, content purchased, content viewed frequently, etc.). Hence, these tools help to better market the website.

Other popular features in CMSs are:

  • SEO-friendly URLs
  • Integrated and online help, including discussion boards
  • Group-based permission systems
  • Full template support and customizable templates
  • Easy wizard-based install and versioning procedures
  • Admin panel with multiple language support
  • Content hierarchy with unlimited depth and size
  • Minimal server requirements
  • Integrated file managers
  • Integrated audit logs

How to Choose a CMS?

There are numerous Content Management Systems out there which are used by various users or companies but if a CMS is to be chosen according to usage then see the list below:

But if the most popular are considered then according to my knowledge they are:

  • WordPress: WordPress is a content management system based on PHP and MySQL that is usually used with the MySQL or MariaDB database servers but can also use the SQLite database engine.


    • Loads of tools
    • Great selection of themes
    • Affordably priced business plans
  • Drupal: Drupal is a free and open-source content management framework written in PHP and distributed under the GNU General Public License. Drupal provides a back-end framework for at least 2.3% of all websites worldwide – ranging from personal blogs to corporate, political, and government sites.


    • Unshakable security
    • Open-source platform
    • Highly customizable
  • Squarespace: Squarespace is a private American company, based in New York City, that provides software as a service for website building and hosting. Its customers use pre-built website templates and drag and drop elements to create webpages.


    • Beginner friendly
    • Intuitive UI
    • Loads of themes

Since there are various CMS software’s provided by different companies and they all offer almost the same features, hence, it is recommended to research on your own before buying a CMS for your personal use or company but it changes according to the user or company since it all depends on personal needs and preferences.

Salesforce as CMS:

Now that you have basic knowledge of what CMS is and how it works, we can move on to the main topic under discussion, that is, Salesforce as a CMS.  For those of you who are not familiar with Salesforce it is a Customer Relation Management solution that provides a cloud-based solution, and the reason of its popularity. It has made quite a huge name in the market and is being used by many major companies to handle their clients/customers, hence it is ideal to expect a customer relation management system to also handle content for their clients/customers that is why using it as a CMS is highly beneficial. In simple terms, if you know the content your customer prefers then using the relation manager to provide alerts and content according to the customers track record will better the relation between company and customer. A content management system (CMS) lets you create and manage content from a single location, and then use that content in multiple places. With Salesforce CMS, you can share content across communities, curate content on a community by community basis, and assign access roles to control who creates content.

Content Management creating and sharing a content made with team effort and then curating organizing and displaying it. The overview of the process can be given as follows, content is created in your org (1) which is shared with one or more communities as destinations (2). You can organize and tag the content (3) and then add it to your community pages (4). The content is displayed to your users when the community is published (5).

Using the lightning templates for integrating CMS into salesforce will provide the fastest time to market whilst also allowing full customization and pixel perfect design. Additionally, the Salesforce client-side framework (Lightning) allows the web developers to work in a manner that is familiar to HTML/JS developers (single page app). Now adding CMS like style can be done in two ways, which are:

  1. CMS Connect: Allows you to specify external resources to include in your community deployment.
  2. Native Content: Allows you to create and manage content like news, blogs, promotions and publish them directly to your community site.

With CMS Connect the advantage is that key content elements for example header, navigation, footer, product promotions can be managed in one system and if they need to be updated, they can be updated once centrally and this will then be reflected across the CMS hosted and Salesforce hosted parts of the website. With this type of approach, a consistent experience and look is easily maintained for users across all elements of the website.

The Steps performed to connect a CMS with a Salesforce are as follows:

  • CMS Connect HTML allows you to integrate fragments of your HTML web content (i.e. headers, footers, and banners, etc) to have the same branding experience of your website into your communities.
  • CMS Connect JSON is best for when you want to bring in content lists (i.e. blogs, articles, product catalogs, files, etc) including authenticated content.
    • Before using CMS Connect enable Cross-Origin Resource Sharing (CORS) which is used to access external public content on Salesforce side (CORS is not needed if the content you are pulling in is authenticated). Then the JSON URL is required for external content.
  • Authenticate Support
  • CMS Connect Content Discoverability

The CMS supported by CMS Connect are:

  • Adobe Experience Manager
  • Drupal
  • SDL
  • Sitecore
  • WordPress

Personalized content can also be added to salesforce if the CMS being used is Adobe Experience Manager (AEM), stored JSON content can also be rendered in the community using CMS Connect. If you have several CMS then you can even decide a load order for your customers, the order mostly affects any CSS and JavaScript in your connections. Their dependencies should always be considered when creating a load order.

Please feel free to provide your invaluable feedback or contact us for any Salesforce implementation/integration effort. @CloudFountain team would be glad to be of help.

Categories Salesforce

Salesforce Reports – Create a simple custom report

Adjust Settings:


Imagine trying to comb through your data to figure out what percentage of your opportunities had been closed this year. After a few hundred clicks, you would get pretty frustrated. Luckily, there are reports and dashboards to make your life easier. Compare, evaluate, dissect, and categorize data that will help you and your team make the right business decisions. All with the power of reports and dashboards.

Benefits of Reports:

You and your sales and marketing managers benefit from reports in these ways:

  • Visibility into data—reports give you easy access to key data insights, which helps managers make better decisions.
  • Time savings—you don’t have time to manually dig through all your many objects, records, and fields to pull together answers to your manager’s questions. Reports give you quick way to answer both simple and complex questions.
  • Flexibility—with reports you can pull data from all your standard and custom objects and fields. You have many powerful options for tailoring reports to the specific needs of your end users.

Your Stakeholders’ Reporting Needs:

In this project, you’ll get hands-on practice building reports on the Salesforce platform from start to finish. Let’s see the reports you’ll build for each of your stakeholders to track key business information.

StakeholderReporting Requirements
VP of Sales
  • Simple report showing all of her sales teams’ opportunities, by that have been closed won this year.
  • Report showing opportunities by rep, grouped by Close Date and displayed in a table.
  • Matrix report showing opportunities by owner, stage and size in the pipeline this fiscal quarter.
  • Report showing percentage of closed opportunities being won.
  • Visual comparison of sales rep win rates.
  • Ability to export and manipulate a report spreadsheet software.

Adjust Settings:

1. Click Setup and select Setup.
2. Enter Users in Quick Find and select Users.
3. Click Edit next to your name and change Role to CEO.
4. Click Save.
Next, edit the Close Dates for all of the existing opportunities. This is done so the correct data appears when you run the current fiscal quarter report later in this project.
1. Click the App Launcher and select Sales.
2. Click the Opportunities tab.
3. Click Recently Viewed and select the All Opportunities list view.
4. Select the checkbox to the left of Opportunity Name to select all opportunities
1. With all opportunities selected, rollover the Close Date for one of the opportunities and click the pencil icon.
2. Type in today’s date.
3. Select the checkbox to Update 31 selected items.
4. Click Apply.
Note: All of the opportunities should now have today’s date as their Close Date.
5. Click Save at the bottom of the screen.

Create a Summary Report:

Time to create a new opportunity report.
1. Click the Reports tab.
2. Click New Report.
3. In the Choose Report Type list, click Opportunities, then select Opportunities from the list that appears.
4. Click Continue
Next, you’ll use the Lightning Report Builder—a visual editor for reports. The report builder screen lets you work with report fields and filters, and shows you a preview of your report with just some of the data.
Set the scope of the report using the standard filters.
1. Click the Filters pane.
2. Ensure Close Date is set to Current FQ.
3. Click Opportunity Status and select Open and click Apply.
Change the report columns as required.
1. Click the Outline pane and click the X next to the following column headers to remove them:

  • Owner Role
  • Fiscal Period
  • Age
  • Created Date
  • Next Step
  • Lead Source
  • Type

2. In the Preview pane, click the arrow next to the Opportunity Owner column heading and then select Group Rows by This Field.
Add a summary field.
1. Click the arrow next to the Amount column heading.
2. Select Summarize.
3. Click Sum.
Save the report as Opportunities by Rep in the Global Sales Reports folder.
1. Click Save & Run, and then complete the Save Report details:

  • Report Name: Opportunities by Rep
  • Click in the Report Unique Name text box to auto-populate the unique name. Don’t worry, the unique name of this report isn’t checked.
  • Report Description: What opportunities do reps have in the pipeline?

2. Click Select Folder, choose Global Sales Reports, and click Select Folder.
3. Click Save.