When Salesforce is life!

Tag: Salesforce Page 8 of 24

Automatic export tool for Salesforce Data Export backups

TL;DR
Jump to GitHub for the complete repository: https://github.com/enreeco/sf-automatic-data-export-script/

Have you ever had a close relation with the Salesforce Data Export feature?

It’s a way to periodically export all Salesforce data set in zipped CSV files, including files and attachments.

You can do a one-shot export or schedule it on monthly (available on Developer Edition orgs) or weekly (available on EnterprisePerformance, and Unlimited Editions only).

The one-shot and periodic export configuration is straightforward:

  • Select the file encoding
  • Select which data you want to export (including files and content can increase export size)
  • Select a schedule (for monthyl or weekly export schedule only)
  • Select all or a subset of the available Salesforce objects
Monthly Data Export configuration schedule

What’s the outcome?

You’ll come up with a set of zipped files with a size up to 512 MB, containing Salesforce extracted files (if checked in configuration) or CSVs grouped by Salesforce objects, as shown below:

The struggle of downloading

What if you have plenty of files and want to automatically download them one-shot without having to click link by link?

Unfortunately there are no Salesforce standard APIs that you can use to automate the export and the only way was to go by script by getting all download links and triggering each download on a local folder (or remote storage if you are brave enough).

I thought there was already a solution out there but as far as I know there wasn’t anything.

The script

I decided to implement a script in NodeJS that:

  1. logs in to Salesforce with a full powered user
  2. opens the Data Export page
  3. looks for the download links (if any)
  4. triggers downloads one by one, putting them on a local folder

This way you can continue doing other tasks while the scripts runs.

DISCLAIMER: the script has been written in a quick & dirty style, so please don’t tell me it’s ugly, it gets you to the point!

Download it from GitHub: https://github.com/enreeco/sf-automatic-data-export-script

These are the simple steps:

  1. Install NodeJS and NPM if haven’t already (you just have do donwload the installers, follow this guide but you’ll find tons online)
  2. Open a console and install Foreman with:
    npm install -g foreman
    An alternative is to use the Heroku command line with:
    npm install -g heroku
  3. Install all required packages with command line npm install
  4. Rename the .env-local into .env and replace the environmental variables with a local path (where the files will be stored), the login URL, your username and the password+token
  5. Run your script with alternatively:
    nf start
    or
    heroku local

You’ll see the script running and the files magically will drop on the selected folder:

Automatica Data Export script execution

Have a nice Salesforce day!

Key Findings from the Mason Frank’s Salesforce Salary Survey 2020/21

2020 has been a year of change. The pandemic has had a devastating effect on many, and its side-effects have re-shaped the way we live, communicate, learn and ultimately, the way we work. The Salesforce ecosystem hasn’t been an exception. It’s hard to imagine what the future will look like, but it’s worth having a look at the trends that have shaped the Salesforce universe during these past months if we want to be as prepared as possible. This is why it’s a good time to have a look at Mason Frank’s Salary Survey – the largest independent Salesforce market report worldwide. Mason Frank International is a global leader in Salesforce Recruitment, and their yearly study gives us independent insights into the latest market trends and salaries across the ecosystem. The report delves into topics such as how professionals feel about their jobs and employers, work perks, certifications and diversity, and also looks at salaries in different roles globally. Here are some key findings from the report.

Experience vs education

Let’s start off with something of an eternal dilemma – when it comes to employability, which is more valuable, experience or education? If you’re looking to increase your earning potential as a Salesforce professional, experience seems to be deemed essential, with 90% of survey respondents naming it as the most important factor. That, together with exposure to large projects and Salesforce certifications, seem to be the top-ranked aspects that increase your earning potential. 

In contrast, having a university degree is considered important by just half of the survey’s participants. Formal education can lay the groundwork for a range of skillscommunication and problem-solving just to name a couplebut with Salesforce being such a broad, evolving industry, experience and product knowledge seem to be better indicators of whether or not a candidate is suited to a particular post. 

Which Salesforce certifications will increase your pay? 

We’ve mentioned certifications being an important factor for career progression, but the real question is: which certifications are most likely to help with development and earning potential? The Technical Architect certification tops the Mason Frank Salary Survey list, with Salesforce professionals considering it to be the certification most likely to boost your pay for the second year in a row. 

This qualification is still very much a rare one within the ecosystem, making it highly sought-after by employers across the globe. This certification shows the depth and breadth of a candidate’s Salesforce knowledge and demonstrates the ability to deliver optimized solutions across the entire platform. The qualification is intense, and requires some serious commitment and investment, but as with any challenge, it’ll yield rewards if you put the work in. 

Let’s talk perks

We usually think of salary as one of the most significant factors affecting a candidate’s decision at that all-important offer stage. However, employers and job seekers alike should not underestimate the value of employee benefits. 

Many of the benefits enjoyed by Salesforce professionals, according to Mason Frank, are either the ones supporting employees outside of the workplace, such as health and medical insurance, and retirement savings plans, or perks aimed at improving that coveted work-life balance, such as homeworking or flexible working. Other perks topping the lists are training and development opportunities, and naturally, bonuses. The value associated to each of these perks depends on many factorsbut making sure your employer offers a robust benefits package as well as competitive salary will truly pay off. 

Working from home 

What was previously considered a more of a perk has become more or less the default following the coronavirus pandemic. Pre-pandemic, 21% of permanent professionals who took part in the Mason Frank Salary Survey worked from home on a full-time basis, while 62% worked from home at least once a week. These both increased during the pandemic, with 84% working remotely full-time, and 97% working from home at least one day a week. 

Remote working definitely comes with its own set of pros and cons, and anyone currently experiencing it may have their own thoughts and concerns. However, what the remote working boom has surely done is open up roles to new, more diverse hiring pools, which is good news for anyone looking for a job and great news for employers looking to hire Salesforce talent in such a competitive market. 

Salesforce Salaries

We’ve spoken about how to maximize your earning potential, but how much are Salesforce professionals actually earning? Compensation benchmarking is beneficial to job seekers as it helps them gauge whether or not their salary is on par with their qualifications, skills, and experience, allowing them to make an informed decision when looking for fresh opportunities. 

It’s also interesting to look at salary benchmarking when considering re-location. Evaluating job proposals abroad can be quite tricky when you’re not sure if the salary on offer matches up to the standard of living, or whether it really is competitive in that country. For instance, a junior functional permanent consultant’s salary starts at an average of €23,000 in Italy, while that same role starts off at €48,000 in Germany, €35,000 in France and €47,000 in Ireland. It’s also worth looking at salary benchmarking if you feel like you haven’t seen a salary increase over some years, or if you’re not sure that increase matches up with your years of experience, qualifications, and ultimately, the current standard of living. For instance, the same junior functional permanent consultant salary started at €20,000 last year – an increase of €3,000 in the Italian market over just one year.

The Mason Frank Salary Survey 2020/21 is an excellent resource to learn all about the salary and benefits Salesforce professionals expect and receive today. It’s also packed with useful tips on how to maximize your earning potential as a Trailblazer, bringing you that one step closer to your dream job. Download the full report and get the most current snapshot of the Salesforce Ecosystem. 

What writing a (Salesforce) tech book means: my experience

Almost exactly 1 and a half year ago I’ve been contacted by Alok Dhuri from Packt Publishing asking me if I was interested in writing a Salesforce guide.

At that time I still was a Salesforce MVP and, on my career’s checklist, I missed the authoring experience.

Since I was a child, writing a real book has been one of dreams: the only problem is that I’ve never been an artist, so writing a novel have never been an option (although I really REALLY want it was).

It’s at the age of 27, after my MsC degree, I tried to write a PHP related book for newbies: as a self-taught programming learner (I took an Electronic Engineering MsC but I learned programming all by myself), I really love to help others to achieve knowledge with less effort.

That book never saw the light, although I still have the draft on my archives (I lost the digital copy but still have a printed copy).

In 2009 I joined WebResults as a junior Salesforce developer and in 2013 I started Nerd @ Work blog with a cool technical post about a Salesforce workaround that had, and still have, much appreciation on the community.

That was the time I understood that I had enough knowledge to share to the world: it was an important step in my career, because I finally understood that, although I’ve always been a humble guy, I could give and help people just by telling them what my experience taught me. Post by post, challenge by challenge, Nerd @ Work became a known blog among the Salesforce Ohana community.

Busy on my daily work, side projects, ORGanizer for Salesforce and, recently, on authoring 2 books, I started getting help from the Ohana with awesome guest blog posts, but I try to write as much as I can.

The first book: let’s start with advanced stuff first

Although I really wanted to write something for newbies, the guys from Packt Pub. suggested me to write a guide about Salesforce Advanced Administrator certification, which I took as an amazing opportunity…after all I haven’t ever written a book, challenge accepted!

After almost 6 months, the book was out on the book shops and I had an amazing blast when I saw it on the Dreamforce 2019 book shop (picture below).

Salesforce Advanced Administrator Certification Guide by Packt Pub. at Dreamforce 2019

Next book please!

Writing Salesforce Advanced Administrator Certification Guide was a blast, but it was an advanced book and I knew it couldn’t become a best seller.

Unfortunately few months after the publication, on March 2020 I lost my Salesforce MVP status, which honestly made me feel down regarding my Salesforce Ohana involvement: I didn’t understand why, even after publishing a book, hosting my blog, running a well known browser extension used my thousands people, the status was not renewed but, after the first days of sadness, I thought that it was just a new challenge for me.

Fortunately, on the same March 2020, Alok came back with the title I was looking for: Hands-On Low-Code Application Development with Salesforce.

Finally a book for newbies, where I can try to introduce people to our beloved technology, speeding up their involvement with Salesforce, trying to help companies with an heavy shortage of Salesforce professionals.

The pandemic was striking across the world and a psychologically heavy lock-down hit Italy between March and middle May 2020. we lost a dear friend, Steven, that’s why I decided to dedicate this new book to him and all other Codiv19 victims.

I didn’t have much free time as I though home working could bring, so keeping in time with chapter schedule has been hard during the past months: a mean of 2-3 chapters per month, should have brought the book to life in November 2020 and, luckily, we managed to end at the beginning of October, anticipating by one month…not bad!

Hands-On Low-Code Application Development with Salesforce by Packt Pub.

But how does writing a technical book work?

The schedule

The first step needed when writing a book is the Table of Contents (TOC) creation: what we’ll be talking about?

I usually use a personal knowledge tool (such as Atlassian Confluence) to host these files, so I can quickly update them by accessing them whenever I need from any device.

The TOC is not definitive and it is possible to change chapter order or even chapter descriptions; indeed this is the final approved TOC:

  1. A Brief Introduction to Salesforce
  2. Building the Data Model
  3. Mastering Formulas
  4. Cleaning Data with Validation Rules
  5. Handling Dynamic Configuration
  6. Security First – The “Who Sees What” Paradigm
  7. Be a Workflow Champion
  8. Setting Up Approval Processes
  9. Process Builder – Workflow Evolution
  10. Designing Lightning Flows
  11. Interacting with Actions
  12. All about Layouts
  13. The Lightning App Builder
  14. Leveraging Customers and Partners Power with Communities
  15. Importing and Exporting Data Declaratively
  16. Learning about Data Reporting
  17. The Sandbox Model
  18. Deploying Your Solution
  19. Salesforce Ohana – The Most Amazing Community around

For each chapter you need to provide:

  • expected page count
  • chapter extract
  • learning objectives

To keep up with the schedule I literally printed out a calendar for the next months so I always had the whole schedule on sight range, as shown below.

Each chapter has a first draft release date when the guys at Packt Pub. reviewed all the content in terms of English grammar, chapter structure and all not technical stuff: I REALLY want to thank Prajakta Naik and Tiksha Abhimanyu Lad for surviving my awful English writing!

After one or two review iterations, each book is then evaluated by a technical reviewer: I’ve been supported the whole time by my Ohana friend Fabrice Cathala, who happily joined the team and helped me in tweaking and increasing coherence in the narration on the chapters content with his vast Salesforce knowledge as a prominent Salesforce technical architect and evangelist.

If you plan to write a book, be aware that you may find yourself stuck with a new draft to write, an editor review to check and a tech review to finalise: and this is not your only job!

Time management is essential, you made a commitment and, if you are like me, you REALLY want to keep your word and finish what you started!

Pay attention to…

  • Check your page count: I have a tendency to write too much
  • Balance content depth versus page count: depending on the audience you are talking to, try not to write too much and simplify the explanation
  • Follow a coherent narrative style: it is your book, choose your style and don’t be afraid to adopt an informal writing…I love to put some humour (even if a tech book is not the perfect place to tell a joke!)
  • Use external references: there’s a plenty of stuff on the net, avoid copy&paste of tables or lists, simply add a reference / highlight box with a link to the external resource where the reader can read further details
  • Take good screenshots: save with good resolution and avoid typos (I’m known for writing tons of typos…). I suggest to save pictures on a dedicated folder (one per chapter) so, if you ever need to make some modifications, you have the original version
  • Take a note of each step in your examples: if your book has examples, take notes of any configuration/customisation, you may need to execute the same steps again in the future if you need (for example) to take another screenshot and, believe me, after few months from that writing you may forget what you were doing
  • Not forget the final goal: during the writing you may find weeks where you believe you want to give up, you may be stressed, but remember that this is pretty normal, it is the so called writer’s block, and if you are not an experienced author, well…soon or later you’ll fill this awful feeling

Finally the publication

But at the end of your journey finally the book gets published: this is an amazing feeling and now you have to wait patiently to see reviews coming from all around the world, hoping that the efforts you did to write those hundreds pages have been worth a bit at least, and maybe helped someone in achieving some knowledge.

I really love the feeling of taking a copy of my own book, turn the pages, and randomly read an sentence and check if I’ve been clear enough.

My free copies of the book, a cool gift from the publisher

Writing a book is an interesting and formative journey, if you believe you have something to tell the world, start a new authoring project, think of a cool title, plan your content and start writing: believe me if I tell you this is not a waste of time!

If you want to start a Salesforce career give my book a try and let me know if you enjoyed it!

Comparison between Salesforce Omni-Channel and Round Robin Distributor for Salesforce

Nandini is currently working with Mirketa as a Product Manager aiming to provide strategic and innovative solutions. She specializes at salesforce sales cloud & admin providing support in product marketing, client interface and aspects of project management. Alongside, enjoys writing blogs on Salesforce Sales Management, and shares her experience in product management on Medium. Connect with her on LinkedIn for related conversation and insights!


Omni-Channel is a declarative tool that routes work based on queues to help assign work items to available agents in real-time. The assignment uses routing models based on the most available and qualified support agents and sales reps in your Salesforce console.

Why Salesforce Introduced Omni-Channel?

  • Omni Channel routing helps business admins push workload (work items in Salesforce) to the agents in real time thus optimizing service response time.
  • With a high ticket (support request) volume incoming, the agents need to prioritize what is of high priority to business, and Omni-Channel solution allows Admins and Supervisors to set routing priorities to work items via Secondary Routing enablement.
  • Shorten the average resolution time for online customers through Live Chat by listing it as a priority to prevent delay in responses to live customers on your website.
  • Track ticket volume and reason of ticket declines by setting up Omni-Channel Supervisor in your Salesforce org and watch handle times tick by the second, and average wait times change as agents accept and close their work.
  • Weighted allocation and capacity management by assigning higher load to more experienced and lesser to the new joinees to avoid the burnout it could cause queuing up everything to the very best agents only.
  • Skill based routing to the agents based on the attribute associated with the work item on a real-time basis.

How can you set up Omni-Channel for your Salesforce org?

If you are just starting to set-up omnichannel experience, here is the list of tasks you would be required to perform:

Step 1: Type in Omni in the Quick Find box of the Setup Menu. In the options, click Omni-Channel Setting and check ‘Enable Omni-Channel’ and Save

Step 2: Click on Service Channels under Omni-Channel Setup, and click on New

In here, Salesforce Admins can define the Salesforce Object they want to associate the routing with as well as secondary routing configuration priority

Step 3: Create Presence Configurations and set Presence Statuses

Set up Presence Statuses which is easy to use and understandable by support agents

In this step, the Admin can define the intake capacity for an agent, setting up statuses as the agent declines or agent’s presence status on time out. User can define the users and profiles

Step 4: Specify the manner and order in which Salesforce will automate the routing of records for your business. The model determines which agent will be selected from the list for routing.

Step 5: Create Queue and Define Configuration with Omni-Channel

Step 6: For the final step, add Omni-Channel to the Utility bar of the lightning app

Go to Setup and type in App and select App Manager. Choose the app in which you would want to enable Omni-Channel and click on Edit on the drop-down towards the right.

In the general settings, I will select Service Console as I set it up for my Customer Support Team and then as the new window opens. From there, select Utility Items from the vertical navigation pane and add Omni-Channel from the items.

Since, now you are all set to get started, as a Manager, you ready to connect the right information to the right people at the right time too.

When to not use Salesforce Omni-Channel?

This salesforce out-of-the-box functionality does come up with some limitations which makes it complex to use with other integrations and organizations looking to use advanced routing solutions for their teams

  • In a help article by Salesforce, it is mentioned that when Omni-Channel agents are online and see an error “LIMIT_EXCEEDED, limit exceeded”, it is possible that the queue has hit the maximum limit of 200000 records. New work items will not be added to the queue or routed to agents, until the volume has lowered.
  • According to this Salesforce Article, If a work item requires certain skills, but no agents have those skills, then the work item isn’t routed.
  • Omni-Channel is not capable of assigning records to the specific agent or rep based on past relationships with the clients based on the attribute of Salesforce incoming leads, cases, accounts, opportunity and any custom SFDC object
  • A record cannot be re-assigned to another queue if the case has not been owned within the specific wait time
  • If the capacity of volume assigned to an agent is exhausted, high priority cases or hot leads couldn’t be assigned to the best available rep which impacts the business throughput

Recommended Salesforce App- Round Robin Distributor for Salesforce

Round Robin Distributor (RRD) app overcomes the limitations of Salesforce Omni-Channel and optimizes and simplifies complex routing logics for your Sales & Service Teams

RRD tool is a robust, highly customizable, and open-platform solution for your distribution automation solutions and integrates with your marketing and sales automation apps like Marketo, Hubspot and even with existing Salesforce Lead Assignment rules and Salesforce Case Assignment rules.

Round Robin Distributor addresses the following concerns for you:

  • Role based Assignment- Assign lead to multiple people working at various positions automatically by defining rules for distribution. For Instance, in Education Industry, you might want to assign Program Managers, Financial Advisor, Academic Advisor along with a Case Owner/ Contact Owner on a student which can be round robin’ed with Round Robin Distributor by simply defining the criteria for allocation.
  • Re-assign Cases to another Queue- If everyone in the selected Queue has either declined the case, capacity is exhausted or unavailability of agents, then the cases are routed to the queue with the second highest priority matching the rules logic defined
  • Priority based handling of users and queues – Through Round Robin Distributors, Administrators can define priority to case teams, users and even queues based on which the inbound record can be routed to the best available agent
  • Distribution of leads and cases to the queue- Leads & Cases can be round robin’ed between multiple queues based on the defined attribute for the incoming leads and cases through any integration or manual upload of inbound data.
  • Criteria based routing to queues – Complex AND & OR logic can be used between various attributes and corresponding values can be defined in RRD Teams for efficient allocation for organizations with complex team structures.
  • Ability to handle High-priority cases even if the Capacity is exhausted – For organizations, customer experience is of high value and to cater to high value cases, the agents should be able to respond them on priority even if the limit has been exhausted.
  • Round Robin routing method
  • Eliminates the issue with Triggers and Workflow rules not working on updating by Omni-Channel
  • Handling relationship-based assignments- Useful for routing leads and cases as you want to assign them to the same person working with another case/lead from the same client.

To know more about the benefits of the app and designing of architecture of distribution logic functions and intuitive real-time routing, do visit our page at https://www.roundrobindistributor.com/

Introducing an exclusive referral program this fall, for fellow partner firms and solution architects. Distributing a small token of appreciation for every successful referral. To know more mail us at [email protected]

Who needs so many records?

Today’s post has been written by Nikos Mitrakis, the creator of Forceea, an amazing Data Factory Framework for Salesforce.
Some facts about Nikos:
– Salesforce Developer at Johnson & Johnson EMEA Development Centre (EDC)
– Started his Salesforce journey in 2014
– Has passed 13 certifications, including Application & System Architect
– Holds a Physics degree
– Married since 1994, has a daughter
– Loves watching sci-fi movies and good comedies
– Lives in Limerick, Ireland


A first question you probably have when you read about creating millions of records is “Who really needs to create millions of records?” Sometimes it’s not “millions”; it’s anything between a few thousands to hundreds of thousands of records. But the need is the same: a flexible tool that can insert (and delete of course) many SObject records and will allow:

  • Companies of any size create sandboxes for User Acceptance Testing (UAT).
  • AppExchange ISV/Consulting partners create orgs with sample data for demos or for a realistic simulation of their app.
  • Testers or business users generate their testing data in a sandbox.
  • Architects create Large Data Volumes (LDV) for stress testing of their designs.

Forceea overview

Forceea data factory (a GitHub project) can create data using the Dadela data generation language. The framework can insert/update records synchronously for test methods (or for inserting a few hundreds of records) in your org, but it can also insert/delete records asynchronously.

Forceea has a rich set of powerful data generation tools and it’s the most sophisticated data factory for Salesforce. The latest release adds variables, permutations of serial values and the first function-x definition.

I can hear you asking: “How complex (or “difficult”) is to create records with Forceea asynchronously? Should I know to write code?

The answer is “Yes, you should write a few lines of Apex code. But, NO, it’s not difficult at all!”. Sometimes the data creation is complex because we must have a deep knowledge of how our SObjects are related to each other, but this doesn’t need advanced programming skills.

So, what is needed to start working with it?

  • A Template.
  • An anonymous window to execute Apex scripts.
  • A Lightning component to monitor the progress.

Let’s start with..

The Template

In my previous article How to create an Apex reusable Data Factory Library using Forceea Templates, we had constructed some Templates using an older version of Forceea. The good news is that Forceea now inherently supports Templates, so the Template creation process is simpler.

What is a Template

A Template will not create data; it’s a “description” of the structure of the data we want to create.

When we construct a Template we define:

  • The SObjects that will be created.
  • The number of records of each SObject.
  • What fields will be populated.
  • The structure of field values.

A Template is a Map<String, FObject>, so our Template will start with the initialization of this Map:

Map<String, FObject> template = new Map<String, FObject>();

Defining what data we need

Before starting our Template we should have a good understanding of the SObjects and fields we need, what are the relationships between the SObjects and what data we want for each field.

Here are our (hypothetical) requirements:

Accounts

  • Record type: the record type with name MajorAccount.
  • Name: Account-1, Account-2, etc.
  • Industry: any picklist value except Banking and Services.
  • AnnualRevenue: a random integer number between 1M and 10M.
  • Rating: any picklist value.
  • Type: any random value between Prospect, Customer and Analyst.
  • Shipping address: any (real) address from U.S.

Opportunities

  • Record type: the record type with name BigOpp.
  • Name: <Account> – <text>, where <Account> is the name of the related account and <text> is a text of random words between 20 and 40 chars.
  • Amount: a random number between 10K and 1M, rounded to nearest 100.
  • StageName: any picklist value except Closed Won and Closed Lost.
  • Type: New Business.
  • CloseDate: any date between 1 Jan. 2020 and 30 June 2020.
  • AccountId: the 1st account to the 1st opportunity, the 2nd account to the 2nd opportunity and so on. If we have no more accounts, start from the 1st account, then to the 2nd, etc.

For every 1 account we’re going to create 10 opportunities.

The template for accounts

First, we “add” the Account definitions in our template:

template.put('Accounts', new FObject(Account.SObjectType)
  .setNumberOfRecords(10)
  .setDefinition(Account.Name, 'static value(Account-)')
  .setDefinition(Account.Name, 'serial type(number) from(1) step(1) scale(0)')
  .setDefinition(Account.Industry, 'random type(picklist) except(Banking,Services)')
  .setDefinition(Account.AnnualRevenue, 'random type(number) from(1000000) to(10000000) scale(0)')
  .setDefinition(Account.Rating, 'random type(picklist)')
  .setDefinition(Account.Type, 'random type(list) value(Prospect,Customer,Analyst)')
  .setDefinition(Account.ShippingStreet, 'random type(street) group(shipping)')
  .setDefinition(Account.ShippingPostalCode, 'random type(postalCode) group(shipping)')
  .setDefinition(Account.ShippingCity, 'random type(city) group(shipping)')
  .setDefinition(Account.ShippingState, 'random type(state) group(shipping)')
  .setDefinition(Account.ShippingCountry, 'random type(country) group(shipping)')
);
  • The order of the field definitions is important! Forceea generates the values for the first field definition, then for the second, etc.
  • The Name field has 2 definitions. The first generates the same (static) value “Account-” and the second serial numbers (1,2,3,..)
  • We “grouped” all address definitions in order to “link” the correct street to the correct city, postal cod, etc.
  • If we had a Billing address, we could copy the value from the Shipping, e.g. setDefinition(Account.BillingCity, 'copy field(ShippingCity)')

The Template for opportunities

Now we are going to set the Opportunity definitions:

template.put('Opportunitites', new FObject(Opportunity.SObjectType)
  .setNumberOfRecords(100)
  .setDefinition(Opportunity.AccountId, 'serial lookup(Account) mode(cyclical) source(forceea)')
  .setDefinition(Opportunity.Name, 'copy field(AccountId) from(Account.Name)')
  .setDefinition(Opportunity.Name, 'static value(" - ")')
  .setDefinition(Opportunity.Name, 'random type(text) minLength(20) maxLength(40)')
  .setDefinition(Opportunity.Amount, 'random type(number) from(10000) to(1000000) scale(2)')
  .setDefinition(Opportunity.StageName, 'random type(picklist) except(Closed Won,Closed Lost)')
  .setDefinition(Opportunity.Type, 'static value(New Business)')
  .setDefinition(Opportunity.CloseDate, 'random type(date) from(2020-01-01) to(2020-6-30)')
);

The FObjectAsync class

Now we can proceed with the actual insertion of records. Our main tool is the FObjectAsync class.

How the async process works

When we insert or delete records asynchronously, Forceea uses Queueable Apex to execute one or more jobs. These jobs have some higher governor limits (e.g. 60,000ms total CPU time and 200 SOQL queries), which is definitely positive for our data generation needs.

If you think “I’m going to create x accounts and y opportunities”, forget this way. Forceea works with iterations! An iteration is the number of records (for each SObject) defined in the Template we use. Our template creates 10 accounts and 100 opportunities, so 1 iteration will create 10 accounts and 100 opportunities.

Another important detail is Partitioning, which has two parts:

  • Template: you define the Partition field for each SObject with the method setPartitionFieldName.
  • FObjectAsync: you define the Partition field value for all SObjects with the method setPartitionFieldValue.

The Partition field value should be a string which will identify (or “partition”) the inserted records. As a best practice, use a value with a few characters, even a single letter (uppercase or lowercase).

When inserting records, Forceea checks:

  • If there is a Partition field defined in each SObject.
  • If there is a Partition field value.

If both conditions are valid, Forceea will insert the value in the partition field of each record. So, let’s say that the Partition field for Account is ForceeaPartition__c and the Partition field value is df. In this case, Forceea will insert the value:
df1 into the records inserted in Job 1.
df2 into the records inserted in Job 2.
df3 into the records inserted in Job 3.
etc.

Insert records asynchronously

Now we are going to insert 1,000 iterations, so we’ll insert 1,000 x 10 = 10K accounts and 1,000 x 100 = 100K opportunities.

Open an Anonymous Apex window and enter the following lines:

new FObjectAsync(template)
    .setNumberOfIterations(1000)
    .setNumberOfJobs(20)
    .setPartitionFieldValue('df')
    .insertRecords();
  • The default number of (parallel asynchronous) jobs is 30. Here we require 20 jobs.
  • The partition value is “df”.

Execute the code and then go to the Data Factory tab of the Forceea Lightning app.

  • In the Log panel Forceea displays information about the execution of each job.
  • The Messages panel contains an overview of the async process.
  • The Progress panel will let you know how many iteration have been inserted.
  • Finally, the Job Status panel displays a visual indication of the status for each job (black: pending, green: successful, red: failure, orange: terminated).

Forceea will follow this procedure during the async insertion process:

  • Benchmarks the operation by inserting 1 iteration in the first batch. The transaction is rolled back, so it doesn’t permanently insert any records.
  • Executes the second batch of any job, which creates and insert records of each SObject defined in the Template, with as many iterations as possible (remember the benchmarking).
  • If there are no errors and there are more iterations to be inserted, a third batch is created, and so on.
  • When all iterations assigned to a job have been inserted, the job ends with a successful completion.

When we have a serial definition, Forceea will insert the records without any gaps in the serialization!

Delete records asynchronously

The deletion process follows almost the same logic:

new FObjectAsync(template)
    .setNumberOfJobs(20)
    .setPartitionFieldValue('df')
    .deleteRecords();

Execute the above Apex code and then go to the Data Factory tab to watch the progress.

Forceea will follow these steps during the async deletion process:

  • Reverses the order of SObjects in the Template, so the last SObject will get the first position, etc.
  • If all SObjects in the Template have a Partition field and FObjectAsync has a Partition field value, a number of jobs are enqueued for parallel processing (each job will delete all records of different partitions), otherwise it enqueues only 1 job (no partitioning).
  • The deletion starts from the SObject in the first position, executing the first batch of each job, which benchmarks the transaction to calculate the maximum number of records that can be deleted in every batch. This first benchmarking batch deletes up to 200 records.
  • If there are no errors and there are more records to be deleted, a second batch is created after the completion of the first batch, and so on.
  • When all SObject records assigned to a job have been deleted, the job moves to the second SObject, etc.

Important: if Forceea finds in the Template a definition for the RecordTypeId field of an SObject, it will delete the records of this Record Type only.

Forceea will stop the execution of a job when an error is encountered, except from the errors related to record locking, where it will raise an error only after the 5th occurrence of the UNABLE_TO_LOCK_ROW error.

Using existing lookup records

Forceea will take care of all the complex orchestration of the asynchronous process. The parallel processing offers an advantage, but it’s based on the assumption that we won’t query any existing records from the database, otherwise we may have record locking.

For example, if we have a custom SObject Language__c and we have the lookup field Language__c on Opportunity, to get random IDs for this field we would use:

setDefinition(Opportunity.Language__c, 'random lookup(Language__c) source(salesforce)')

If the above definition raises the UNABLE_TO_LOCK_ROW error (unable to obtain exclusive access to this record), then your only option is to use 1 job only with setNumberOfJobs(1).

Conclusion

Nobody can say that data generation is simple or without issues. Under the hood, the data generation process is quite complex, but it shouldn’t be to the user; Forceea will gracefully handle all the complexity.

I strongly believe that an admin, a tester or even a business user, with no Apex knowledge, can insert/delete records asynchronously using FObjectAsync and existing Templates, which a developer or advanced admin could create.

You can find the code of the above scripts in Forceea-training GitHub repo. And don’t forget to read the Forceea Success Guide; it has a lot of examples and details.

Get Started with Salesforce Data Cleansing

Il’ya Dudkin is the content manager and Salesforce enthusiast at  datagroomr.com. He has more than 3 years of experience writing about Salesforce adoption, duplicate detection issues and system integrations with MuleSoft. He also works with IT outsourcing companies to facilitate the adoption of new Salesforce apps and increase user acquisition and loyalty. 


Simply getting started with cleaning up the data in Salesforce may be a daunting challenge especially for companies that have hundreds of thousands of records or even millions. It is important to know that even if duplicates are severely hindering your marketing and sales efforts, you can bring all of the issues you are having under control and improve the overall quality of the data. If you are like most organizations and feel like the data you currently have is preventing you from capitalizing on business opportunities, we have some steps that you can take today to start the process of data cleansing. 

Know Where Salesforce Falls Short

While your investment in Salesforce may be hefty, the deduplication functionality in the off-the-shelf product is fairly limited. For example, there is no way to conduct a cross-object duplicate search. This means that your new lead may already be in your contacts and vice-versa. Also, a lot of companies have custom objects beyond the standard Lead, Contacts, and Accounts and Salesforce by itself will not be able to check those for you. If you are working with large volumes of data i.e. hundreds of thousands or even millions of records, the duplicate jobs performed by Salesforce will not be enough. In fact, Salesforce itself admits this issue in the Trailblazer Community

Keep in mind that these are only some of the shortfalls of Salesforce’s built-in deduplication features. You can find more details about why the off-the-shelf product alone is not enough to catch all of the duplicates in this article. However, now that you are aware of the limitations of Salesforce in the deduping area, you will be in a better position to choose a third-party product that meets all of your needs. 

Choosing a Deduping Tool 

If you search the AppExchange for a deduping app, you will be inundated with lots of various products that all have their individual merits. However, each company has its own individual needs which narrows down the search results to just a handful of possibilities. There are a few things you need to consider when comparing products. First of all, look for something that’s easy to set up. One of the reasons that the built-in deduplication features inside Salesforce are not very effective is because they are rule-based. This means that your Salesforce admins will have to create a rule for each type of duplicate which can prove to be impossible if we think about the various shapes and forms of fuzzy duplicates. 

A much better approach would be to choose a tool that uses machine learning to catch the duplicates. This offers you several benefits. First of all, you already eliminate all of the issues and hassles of setting up rules since the algorithm will learn to identify future duplicates without explicitly programmed to do so. You are also simplifying the setup process since the product will be ready to use right away. The machine learning algorithms do the heavy lifting and all you have to do is append the field values for the master record. A lot of products also allow you to automate the duplicate checking process which is always helpful given that new duplicates appear all the time. 

Thoroughly Plan Out the Process

One of the biggest mistakes a lot of companies make is that they start thinking about the endgame right away instead of focusing on how data enters Salesforce. For example, if your users are manually entering data into Salesforce or making edits it can be very easy to make a simple typing mistake which causes all kinds of confusion. Automated data imports are not foolproof as well since a lot of time the data is incomplete and if any of the fields required by the object are missing the import will fail. Therefore you need to account for all of the duplicate data entry points and plan out how you will address all of these issues. 

In addition to planning out the technical aspects of implementing the deduplication tool, you will also take into consideration the human factor i.e. any issues the end-users will have while getting accustomed to the new product. This will also require some planning since you don’t want to make a sudden change which interrupts the workflow of your employees. Also, be sure to provide user training since it will take your employees some time to get adjusted, especially if there is a complex setup process involved. 

Set Attainable Goals

Recent data shows that somewhere between 10%-30% of the data inside a company’s CRM is duplicate data. The key metrics you should be monitoring are accuracy, consistency, and completeness. The accuracy of the data is best measured through business interaction since this provides you with real-time insights. If this is not possible, then you should use independent confirmation techniques. Pay close attention to the ratio of data to accuracy which will identify known errors. This includes missing or incomplete information that could potentially be located in a duplicate record. If all of the processes you are implementing are proving to be effective, then the ratio should increase over time. 

When we look at consistency, this refers to conflicting data. When you have duplicate records they will usually contain several versions of the truth and you have to append the entries to identify the master record and merge all of the duplicates. If you have conflicting data, you will not be able to get a complete view of your customer and you could be aligning your strategies incorrectly. This is where the completeness of the data comes in. Try thinking about all of the data scattered among duplicate records as pieces of a large puzzle that give you invaluable insights about the customer. Combing through all of the records manually or even with a rule-based application will prove to be very time-consuming if not impossible since it will not be possible to create a rule to fit each scenario. 

Constantly Collect Feedback

We mentioned the importance of monitoring some of the key metrics in your deduplication efforts, but listening to the actual people using the tool on a daily basis is just as important if not more. They could provide you with valuable insights that data may not be able to measure. For example, they could tell you that they are not trusting the tool to properly cleanse the data or that they are still spending more time than they would like fixing some of the duplicates manually and a lot of other constructive feedback. At the end of the day, you have to remember that the reason you are installing this particular app is to assist the people on the ground communicating with customers. If they are telling you that this thing just isn’t working, then this should be the most important factor in deciding to make a change. 

Don’t Postpone Deduping Your Salesforce 

While the duplicate issue may have snowballed into a big problem for many companies, they are unwilling to start tackling this problem given the magnitude and the number of resources it will require to properly deal with this problem. However, you always have to keep in mind that these duplicates are constantly draining your resources. As a general rule, keep in mind the 1-10-100 ratio. It costs $1 to verify the quality of the data you have, $10 to eliminate each duplicate, and $100 for every duplicate that is left unchanged. If you have hundreds of thousands or millions of records, such costs could really add up, which is why you should not delay deduping your Salesforce. 

Getting Started with AI Personalization in Salesforce Marketing Cloud

This guest blog is delivered by Leah Fainchtein Buenavida, a technology writer with 15 years of experience, covering areas ranging from fintech and digital marketing to cybersecurity and coding practices.


The demand for constant, personalized, seamless customer experiences is always growing. According to the Connected Customer report, 67% of customers say their expectations for good experiences are higher than ever.

Marketers understand the value of personalization. However, delivering personalization at scale remains a challenge for many brands. Tools like SalesForce Marketing Cloud can help you automate personalization, make data-driven decisions, and create dynamic content. 

This post reviews some of the platforms included in the Marketing Cloud platform, with a focus on the Personalization Builder.

What is Salesforce Marketing Cloud?

SalesForce Marketing Cloud is a marketing platform that provides multiple tools for managing the interaction between a brand and its existing or potential customers. The platform enables you to contact customers on the right channel, at the right time via email, SMS, or social ads, create multi channel experiences, and increase sales and customer acquisition. 

This model of Marketing Cloud is based on the ME2B approach, where customers are defining the kind of relationship they want with brands. Brands need to create experiences that promote trust and strong connections with their customers. Marketing Cloud tools enable them to establish this relationship and collect important information about their users, their preferences, and opinions.

What Can You Do With Marketing Cloud?

The Salesforce Marketing Cloud consists of seven primary products that leverage Artificial Intelligence (AI) technology and predictive analytics to connect you with your customers. You can interact with customers through mobile messaging, email, digital advertising, social media, and website content. Primary products include Email Studio, Mobile Studio, Social Studio, Advertising studio, Einstein, Journey Builder, Personalization Builder.

AI-based marketing tools can turn standard content into hyper-personalized messaging. Personalized emails, for example, have a greater chance of being opened and engaged with than their traditional alternatives. Only the most relevant communication can generate a positive response from your audience. Marketing Cloud helps you place the right content into your web messaging and email along the customer journey. Machine learning capabilities enable you to continuously improve and adapt the customer journey, keeping content relevant and engaging.

Salesforce Einstein

Einstein integrates Artificial Intelligence (AI) technology with Salesforce’s Customer Relationship Management (CRM) system. Einstein uses predictive analytics, machine learning, and Natural Language Processing (NLP) capabilities to analyze customer data. Einstein’s AI algorithms leverage this analysis to improve its capabilities, and perform more accurate  analysis. This technology can analyze user data in different sectors: 

  • Sales—helps to increase conversion rate by predicting the probability of a customer to purchase a product.
  • Customer service—helps with predicting issues, classifying and routing of cases. Also includes intelligent chatbots to help customers resolve common problems.
  • Marketing—it helps to increase conversion rates by predicting who is more or less likely to engage with an email by engagement scoring and predictive recommendations.
  • Retail—uses customer data to identify the products a visitor might want, both in digital and traditional commerce. Brands can increase revenue by predicting if a consumer is more or less likely to purchase a specific item.

Salesforce Personalization Builder

The Salesforce Personalization Builder is based on Einstein. It uses predictive analytics to deliver personalized content to customers based on their preferences. The Personalization Builder shows you the behavioural history, real-time interactions, and buying preferences  of customers. You can use this data to predict how they will act in the future, and understand the motives behind their actions. These insights can help you improve your customer engagement strategy across all relevant channels. 

You can use Salesforce Personalization Builder together with other Marketing Cloud platforms to further improve your marketing campaigns. Content Builder for instance, manages all content and assets in one location. You can use Analytics Builder to track the performance of content campaigns, measure their success and use Personalization Builder to extract valuable insights from the data to adjust a campaign accordingly.

How to Set Up the Personalization Builder in Marketing Cloud

The process below describes several technical steps that can help you set up the Personalization Builder in Marketing Cloud.

Step 1content or product

Decide if you want to use content or product or both, and set up your catalog with field attributes, and activity tracking for category view, purchases, shopping cart. A catalog stores all your content or product data with as many details as possible. This includes price, URL’s, stock, description, keywords, and categories.

Step 2import your catalog

The catalog importing task in Personalization Builder is time consuming. There are two possible options:

  • Flat-file upload—the uploaded file is added to a publicly available web URL or an FTP account and imported into the Builder twice a day.
  • Streaming updates—updates and adds content and products through another snippet of JavaScript.

You have the option to map your catalog fields with the default fields of Marketing Cloud, and select which fields to tag. Tagging determines the fields that are used to build your affinity per profile. For example, tag the fields for category and brand, where brand is Toshiba and category is TV.

Step 3data collection

Once the catalog is in place, you can start collecting user data. You might need help from your developer to implement all the necessary Collect Codes for behaviour tracking. These Collect Tracking Codes are JavaScript snippets that are used to gather data about known contacts and unknown visitor behaviour.

First, collect the available JavaScript snippets of Marketing Cloud. Start with the Base Collect Code that needs to be implemented on every page of your web site. Find the code in the official documentation

Next, you need to capture user attributes and information. This script identifies your unknown visitors:

<script type=”text/javascrip
	_etmc.push([“setOrgId”, “MID”]);
	_etmc.push([“setUserInfo”, {“email”: “INSERT_EMAIL_OR_UNIQUE_ID”}]);
	_etmc.push([“trackPageView”]);
</script>

Step 4enable the Personalization Builder

Turn on the data extensions of Einstein. Follow the next steps to enable the Personalization Builder populate these data extensions in Contact Builder.

  1. Navigate to the Personalization Builder Status tab.
  2. Reveal the drop-down menu by choosing the grey Settings cog
  3. Click on Data Extension Settings
  4. Click on Enable Einstein Data Extensions
  5. Click Save.

Conclusion

The most common challenge that brands encounter when using SalesForce Marketing Cloud is not knowing how to use its different tools. Marketers need to know which tools to use at the right time, and for what purpose. Salesforce Personalization Builder helps you better understand how your customers behave and why. It enables you to see your customers’ behavioural history, real-time interactions, and buying preferences. You can set it up with only a few technical steps.

Salesforce is Retiring Their Data Recovery Service. Here’s What You Should Know.

Mike Melone is a Content Marketing Manager at OwnBackup, a global leader in SaaS business continuity and data protection solutions. New to the Salesforce ecosystem, Mike brings a decade of experience in copywriting and marketing to OwnBackup, where he curates original content related to all things Salesforce backup & recovery.


Salesforce is the most secure and available platform in the industry. Yet data protection remains a shared responsibility as it does with all modern SaaS platforms. Customers are responsible for preventing user-inflicted data and metadata loss and corruption and for having a plan in place to recover if it happens. That’s why Salesforce recommends using a partner backup solution that can be found on the AppExchange.

Despite this recommendation, our 2020 State of Salesforce Data Protection survey found that 88% of companies are lacking a comprehensive backup and recovery solution, which may be especially risky with many companies increasing their remote workforce. Furthermore, 69% say their company may be at significant risk of user-inflicted data loss.

Salesforce Data Recovery Service Is Being Retired

Last year, Salesforce announced that they will be retiring their last-resort data recovery service, effective July 31, 2020 because it has not met their high standards of customer success and trust. For customers who aren’t proactively backing up their data, Salesforce currently offers this last resort Data Recovery service. However, at a cost of over $10,000 and a 6-8 week recovery time this service is not an adequate option for many customers. The upcoming retiring of this last resort Data Recovery service is an excellent opportunity to remember that a proactive backup and recovery has always been a required and recommended best practice. Salesforce offers a number of native backup options to minimize your business risk of user-inflicted data loss.

Native Salesforce Options

Weekly Export and Report Exports

Users with “Data Export” profile permissions can generate backup .CSV files of their data on a weekly basis (once every 6 days) or on-demand via user-generated reports. The export can be scheduled and then manually downloaded when ready. Weekly Export backups can include images, documents, attachments, and Chatter files. In the event of a user-inflicted data loss, users must manually restore by uploading their .CSV files in the correct order. Because this process can be challenging OwnBackup has created a free eBook with a step by step process to Recovering Lost Data Using Salesforce Weekly Export.

Data Loader

Data Loader is a client application for the bulk import or export of data. It can be used through the user interface to bulk import or export Salesforce records through .CSV files, as well as Insert, Update, Upsert, Delete, or Export Salesforce records as .CSV files. Data Loader command line can also be used to backup data to or from a relational database, such as Oracle or SQL Server. Restoration of lost or corrupted data would be manual.

These native methods include data, but no metadata. In order to proactively protect your Salesforce platform, you should back up metadata and attachments as well. Without this vital piece, putting the relationships between your Salesforce data objects back in place can become a painstaking process.

Without the ability to maintain relationships, you’ll only have partial restore capabilities. If an account is accidentally deleted, all of the contacts, cases, tasks, and other records will be deleted as well. If you only restore the account, but not it’s dependent child records, your recovery capabilities are only providing you partial coverage.

Having a copy of your data is important to meet the minimum standards of a backup. The real challenge is the ability to restore data back into Salesforce. Plan for regular data recovery testing to ensure that you are prepared for any unexpected data events. You must test your strategy so you’ll be aware of what will actually happen if you were to experience a data loss or corruption. When you test, you may find that you are unable to recover in the time or to the fullness that you require. When testing, check:

  • Are you able to recover specific versions of document or data or metadata?
  • Are you able to minimize data transformation during the restoration process?
  • How does your strategy handle different types of restore processes?
  • What is the performance and time to restore?

How to Trust in Your Salesforce Data Recovery Plan

At the beginning of this article we mentioned Salesforce recommends using a partner backup solution that can be found on the AppExchange. The reason they recommend this is almost entirely due to the challenges most experience when attempting to recover lost or corrupted data and the fact that metadata cannot currently be backed up using native backup methods.

OwnBackup, a top-rated partner on the AppExchange, is here to help you identify the five concepts that really matter when it comes to a comprehensive backup AND recovery.

1. Recovery Point Objective (RPO) and Recovery Time Objective (RTO)

For many companies, having unresolved data loss or corruption for over one week could equate to millions of dollars in lost revenue. As you construct your data recovery strategy, you will need to define your recovery point objective (RPO) and recovery time objective (RTO).

The RPO is the amount of data a company can afford to lose before it begins to impact business operations. Therefore, the RPO is an indicator of how often a company should back up their data.

The RTO is the timeframe by which both applications and systems must be restored after data loss or corruption has occurred. The goal here is for companies to be able to calculate how fast they need to recover, by preparing in advance.

What the recovery time and recovery point end up being are deeply influenced by backup frequency, backup retention, your ability to compare current and past data, and to restore just the data that has been impacted. RTO and RPO are two parameters that help minimize the risks associated with user-inflicted data loss

2. Data Integrity

Data integrity means that you should have a complete backup of your Salesforce environment. Backing up a few critical fields or records isn’t enough. Salesforce is a relational database that doesn’t allow admins to manipulate or populate the record IDs. All of the relationships in Salesforce environments are based on these record IDs. In the case of a data loss, a cascade delete effect will remove all of the child records associated with that account.

This is one of the big reasons why an audit trail is not a backup and recovery solution. You never know what the scope of a data loss will be in the future. For that reason relying on field level changes on a subset of objects as a reliable backup solution is a fundamentally flawed strategy.

Therefore best practice is to have a full backup of all of your Salesforce data, metadata, and attachments. You may also want to have a partial, high-frequency backup for critical objects that change more than a few times each day.

Another best practice for maintaining data integrity includes having restore capabilities that allow both full and granular restore to prevent an accidental overwrite of legitimate changes.

Finally, the integrity of your backups themselves are critical, particularly for companies with internal data security policies or regulatory compliance concerns.

3. Security

Your company is likely required to follow security requirements. Your backup and recovery process shouldn’t be excluded from these security requirements. Saving .CSV files of your Salesforce data within the company hard drive or your laptop should not be considered a best practice. Ideally, your backup data should be saved to trusted cloud storage. To meet compliance requirements the data should also be encrypted both in transit and at rest.

You should also consider the permission settings and accessibility of your backups. With your current backup process, could an inappropriate user access and delete data.

4. Reliability

A reliable backup and recovery plan includes automated change identification, scheduled backups, proactive data change monitoring, and the ability to reach out for technical support if needed.

You should have the ability to automatically identify changes that have occurred in your schema. A tool that can identify what has changed between backups is important for data, metadata, and attachments.

Your backups should run daily at a minimum. Schedule your backups to run on a set schedule which is easy to define and monitor.

With so many end-users with read-write and delete permissions or merge abilities, proactive monitoring is crucial. A reliable data backup and recovery plan allows you to quickly find out when unusual changes have occured or if a backup has failed.

5. Accessibility

Storing data backups outside of Salesforce is a best practice for accessibility. If Salesforce were to become temporarily unavailable, you would still have access to your data and metadata.

Data backup portability is a must for an optimal data backup and recovery plan. Data movement should be able to take place securely and conveniently. Whether you’re looking to conduct more complex reporting on large data sets with BI and ETL tools or want to maintain legacy business continuity and data recovery procedures, your data should be yours to use as you please.

Data accessibility is also a key requirement of GDPR and CCPA. In support of these regulations, you should have full transparency into their data, even backups. To comply with these regulations, you’ll need to be able to search for where a Data Subject’s data, including attachments, resides within their backups.  Additionally, you must have the ability to rectify or forget an individual’s data in your backups for full compliance.

 

Protect Your Data and Maintain Business Continuity with Comprehensive Backup and Recovery

By making the tough decision to retire their Data Recovery service, Salesforce has reiterated their commitment to customer success and trust. Now is the perfect time to reassess your current backup and recovery strategy. Were you completely relying on Salesforce’s Data Recovery service? Why not start backing up with their native Weekly Export service instead? Any backup strategy is better than doing nothing at all.

We’d also encourage you to explore Salesforce AppExchange partner solutions, such as OwnBackup. OwnBackup brings ROI to its over 1,700 customers every day by helping them protect their Salesforce data. OwnBackup customers are almost 3x more likely to notice a data loss or corruption and they feel 3x more prepared to recover.

Now is the perfect opportunity to take a step back and put a comprehensive backup and recovery plan in place to ensure that your Salesforce data has the same level of protection as your other critical systems.

To request a demo and learn more about OwnBackup and our solutions, click here.

Salesforce experts against Covid-19 FTW!

Global leader in Salesforce recruitment, Mason Frank International, recently got in touch with me about an opportunity for an important project they were working on. In response to the Covid-19 crisis, they have collated expert advice from leading Salesforce MVPs and professionals into an industry whitepaper, of which I am proud to say I am part of.  

The whitepaper covers five common challenges many are struggling with at this moment: cost saving, data security, remote working, growing at scale, and business continuity.

I am honored to have been involved in this project, providing Salesforce advice to those who need it. I hope my own and my peers’ insight helps those looking for answers at this unprecedented time.

Please do have a read and share with anyone who would benefit from it: https://www.masonfrank.com/overcoming-business-challenges-with-salesforce/

Thank you, and stay safe!

Salesforce Data Management 101: Know Your Storage

Today’s guest post is delivered by Gilad David Maayan, a technology writer who has worked with over 150 technology companies including SAP, Samsung NEXT, NetApp and Imperva, producing technical and thought leadership content that elucidates technical solutions for developers and IT leadership.


When developing an app, you need to know how data is stored, structured, and organized. This information is crucial when building, maintaining, and updating your software. It can also help you understand what are the capabilities of this build, how far you can take it, and when it will need to be scaled up. 

In Salesforce, you can use two types of storage for data and for files, but there are five methods designed for specific use cases — files, CRM, documents, attachments, and knowledge. In this article, you will learn how storage works in Salesforce, including tips to help you avoid hitting your storage limits.

How Data is Stored in Salesforce

When working with Salesforce, there are several reliable and efficient ways to store your data. This includes media files, customer profiles, documents, and presentations. This storage is broken down into two types — data and file. 

Data storage includes many fields, such as accounts, cases, custom objects, events, opportunities, and notes. This data is automatically stored within the Salesforce database and you do not have individual control over where specific items go. 

File storage includes attachment files, customer content, media, Chatter files, documents, and custom files in Knowledge articles. This content you can individually control depending on how it is created and attached. Below are the five methods you can use for file storage.

Files

Salesforce Files is a storage location you can use to store any type of file. Salesforce has positioned it to replace most of the following methods as it offers more features and functionality. Files enables you to follow specific files, generate links, share files with users or groups, and collaborate on files. In Files, each file can be up to 2GB. 

Customer relationship management (CRM) content

Salesforce CRM content is where you can store files that you want to publish and share with coworkers and customers. For example, presentations or content packs. This can include marketing files, document templates, media, or support files. This storage type supports files up to 2GB although this drops to 10MB depending on how you upload data. 

Documents

Documents storage enables you to store a variety of web resources, including logos, email templates, and Visualforce materials. When files are stored here, you do not have to attach data to specific records. In Documents, files can be up to 5MB.

One thing to keep in mind — if you are using an older version of Salesforce Documents storage is still available. However, if you are using Lightning Experience, this functionality has been replaced by Files. When you update your Salesforce, you need to convert your Documents to Files before you can access your data. 

Attachments

Attachments is a storage area you can use for files that you want to attach to specific records. For example, marketing campaigns, cases, or contact information. The downside of Attachments is that you can’t share files with links and do not have access to version control. In Attachments, files can be up to 25MB and feeds can be up to 2GB.

Knowledge

Knowledge is a storage area you can use to create and store knowledge base articles. These files can be searched by internal users and shared with customers through your portals or Lightning Platform Sites. In Knowledge, each article can be up to 5MB.

How to Avoid Hitting Your Storage Limits in Salesforce

Regardless of how you store and manage your files in Salesforce, you need to be aware of what your storage limits are and how to make the most of those limits. You should also be aware of what alternative options you have to expand your storage. 

Storing data outside of Salesforce

Sometimes, the most practical option is to store some of your data outside of Salesforce. One reason for this is your storage limits. In Salesforce you are allowed:

  • Data storage—10GB of base storage plus 20MB of storage per user. If you are using Performance or Unlimited versions, user storage is 120MB per. However, the Developer, Personal, or Essentials versions follow different rules with no user data and 5MB, 20MB, and 10GB respectively.
  • FIle storage—for most plans you get 10GB per organization and from 612MB to 2GB per user. For the Developer and Personal plan you get 20MB, and for Essentials you get 1GB. No user data is provided for these plans.

Even if your data is still within storage limits, keeping redundant or unnecessary data in Salesforce can cause issues, including:

  • Degraded performance
  • Inaccurate reporting
  • Inefficient searches

To avoid these issues and ensure that your limits are not exceeded, you might consider adopting a cloud storage service. These services can provide scalable, cheap storage that you can connect with API or third-party extensions to your Salesforce system. 

For example, Azure File Storage by NetApp can provide a standard file system format that you can use from anywhere, including hybrid systems. Or, AWS S3 services can be connected for unstructured storage and any type of data. 

Cleaning up unwanted data

Maybe you do not want to store data outside of Salesforce or you have already moved data but still want to improve storage efficiency. In these cases, you can focus on cleaning your data. You can do this either manually or automatically depending on the type of data you’re trying to eliminate. 

For manual clean-up, Salesforce provides a native deletion wizard. You can use this wizard to eliminate old accounts, contacts, activities, leads, or cases. To identify data that is safe to remove you can run a report to see when data was last used and eliminate things before a certain date. Or, you can individually delete data as users inform you it’s no longer accurate.

Another option is to use extract, transform, load (ETL) tools to pull your data, process it (removing unnecessary data), and load the remaining data back in. This option enables you to script clean-up based on whatever parameters you’d like. However, it can be a lengthy process and requires the help of external tools, such as Salesforce Data Loader or Informatica.

Archiving data

During your data downsizing, you will probably find data that you no longer need in your system but that you don’t want to delete. For example old client files that you need to keep for compliance, historical customer reports, or knowledge base articles for legacy products or services. 

If you have data like this that you want ‘just in case’, archiving is your best option. Archiving enables you to export data from your system, compress it for efficiency, and store it wherever you prefer. 

Often, the previously mentioned cloud services are a good option for this. Many services have cold storage tiers available that are much cheaper than on-premise storage. These services enable you to store large volumes of data that you rarely need to access and can eliminate worries about data corruption or loss due to hardware failure

Conclusion

Salesforce comes with a specific data management build that you need to comply with. The two basic data types are data and files, and these are sorted further into five organizational types — files, CRM, documents, attachments, and knowledge. However, you do not have to use all of these. Recent Salesforce change enables you to store most of these elements as files. 

Whichever structure you choose, be sure to continually monitor and optimize your storage. Adding monitoring on a regular basis can help you optimize both performance and billing. To avoid hitting your storage limit, you can store data outside of Salesforce, clean up unwanted data, and archive cold data. 

Page 8 of 24

Powered by WordPress & Theme by Anders Norén