I’m happy to announce that my book, “Salesforce Advanced Administrator Certification Guide: Unleash your Salesforce administration superpowers with an advanced training certification guide”, made it to BookAuthority’s Best New Salesforce eBooks.
BookAuthority collects and ranks the best books in the world, and it is a great honor to get this kind of recognition. Thank you for all your support!
The book is available for purchase on Amazon.
Tag: Salesforce Page 9 of 24
This guest post has been written by Stas Dunayev, a Managing Director and Valentina Naumenko, a Head of Marketing at Advanced Communities (London based consultancy), a highly innovative team devoted to Salesforce Community Cloud evangelisation.
I decided to give AC a spot on my Nerd At Work because I used their great product on a personal project regarding the Salesforce Ohana Italia, and what a better way to promote a product that is available for free for our Salesforce Ohana! (ed)
We are Advanced Communities and we specialise in Salesforce Community Cloud. We have lots of Community Cloud components on AppExchange and we would like to introduce our most popular component – AC Ideas.
The main point of our Community Ideas Component is to facilitate the Ideation process. In plain English, this means your customer or partner or even your own employee can create an Idea and other members of your customer/partner/employee community can then view, comment and, most importantly, vote for that Idea. After voting, you can see which Ideas are the most popular ones and decide whether to implement them or not.
The Ideation process can be employed by companies and organisations of all sizes and across all industries as an important part of product design.
To stay one step ahead of your competitors, you need first and foremost to listen to your users as this allows you to succeed in both growing your business and retaining your existing customers. You might be familiar with the Ideation process already as Salesforce as a company uses Ideas extensively for its own products. On the well-known IdeaExchange site (https://trailblazer.salesforce.com/ideaSearch), Salesforce users have created thousands of ideas suggesting improvements and missing features and collectively contributing to the success of new Salesforce releases. If Salesforce uses it, why can’t your company do the same?
Ideas Management used for Salesforce Community Cloud platform can provide fantastic benefits for any business: it allows firms to interact with clients as well as partners and to engage with their personnel within a community thus providing an opportunity to generate fresh ideas.
The Ideation process includes the following steps:
- Generating and Gathering a great number of ideas from all your stakeholders that then can be filtered and selected into the brightest, most appropriate or most ingenious ones.
- Reviewing. The status board enables you to easily review all submitted ideas and to reward your best contributors
- Evaluating and Communicating keeps your community audience informed about the ideas status updates.
AC Ideas, an Idea Management created by Advanced Communities, provides you with a complete set of tools at each stage of the Ideation process. AC Ideas can help you leverage the power of Community Cloud and crowdsource new ideas as well as collect employee feedback and provide valuable insights to help you grow your business.
By employing AC Ideas, you will be able to:
- Understand your customer or partner needs.
- Stay in touch with your employees.
- Step beyond straightforward solutions and generate innovative ones.
- Explore new directions which you may not have encountered before.
- Ask the right questions to your stakeholders and listen to their answers.
- Measure and quantify customers’ demand.
AC Ideas is a lightning solution developed for Salesforce Community Cloud which allows you to get invaluable feedback from your customers and to identify their pain points or missing features in your products and services. The ideation process can and should help you with planning and creating a roadmap for your products.
So let’s take a look at how AC Ideas works.
1. After installing the component and setup of its settings, your users can start generating new Ideas. To do this, they can login to community, go to the Ideas page and click ‘Post an Idea’ and fill in details – the key information about an idea: its title, categories and description.
2. Now a new idea is posted! For more efficient management of published ideas there is a list of useful features:
- Comments and Votes give your community a voice and provide clarity on what matters most.
- Votes Threshold: set up the vote threshold, e.g. after exceeding the set threshold, the Idea will automatically change its status from ‘New’ to ‘Accepted’ and the product manager will get notified of this via email.
3. And finally, you get a clear structure of your ideas, obtained by using a Categories Hierarchy, as well as Filters and Advanced Search, that allows you to organise your Ideas page in the most efficient way.
Since the component was launched on AppExchange it has been installed multiple times and is in use by thousands of companies and organisations.
The main version is free and does not have any restrictions.
A paid Enterprise version is also available with lots of extra features and is in use by companies such as Australia Post, Mulesoft and Financial Force from this link.
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.
The consumers of 2020 want to access and purchase products and services anytime and anywhere. They are always connected and engage with e-commerce brands through chatbots, social media, and marketing emails.
Consumers often expect to instantly find and buy the product they are looking for. This is why e-retailers want to create a smart, and easy shopping experience in every media channel. You can achieve these goals through the use of Salesforce Commerce Cloud.
Salesforce recently announced some new features in its Commerce Cloud platform. New features include artificial intelligence, inventory availability and more. Read on to explore some of these new features.
What Is Salesforce Commerce Cloud?
Salesforce Commerce Cloud (SFCC) is a cloud-based e-commerce platform that lets you manage products, promotions, content, and pricing. From the operational point of view, the platform offers different functionalities over multiple channels like mobile, web, social, and store. SFCC integrates with your order fulfillment channel and with your back-office tools.
Salesforce Commerce Cloud key features include:
- Omni-Channel platform—SFCC integrates your physical store with your online store to improve customer experience and grow your business.
- SaaS solution—SFCC is a SaaS solution that enables real-time access to information about your online and offline operations.
- Flexibility—SFCC enables customers to return products anywhere they want. In addition, shoppers can save time by paying online and picking up the product from the store.
- E-commerce website management—SFCC provides a Content Management System (CMS), and Operations Management System (OMS). The e-commerce store does not require programming experts to work on the backend. SFCC provides a wide audience reach with compatibility to all popular operating systems like Windows, Android, and iOS.
- Personalization—SFCC offers a personalized shopping experience by analyzing customer behavior. As a result, store owners can promote unique content that is appealing to specific users.
- Seamless upgrades—Salesforce constantly rolls out many new features and updates. Updates are available in the administration panel and the installation does not require any technical intervention.
- Internationalization—SFCC enables users to manage multiple stores from a single back-end. As a result, store owners can integrate things like multi-language and multi-currency.
Newest Salesforce Commerce Cloud Features
Top-shelf shopping experiences are critical in the competitive e-commerce landscape. One way of doing so is through Artificial Intelligence (AI). That is why Salesforce recently integrated AI-powered features into the Salesforce Commerce Cloud. Below is a quick review of the newest Salesforce Commerce Cloud features and how they can transform e-commerce brands.
1) Einstein AI-Based Visual Search
The term visual search refers to a product search, which is run with a photo instead of text and keywords. Recent reports reveal that 62% of millennials prefer visual search over any other search technology. In addition, brands that offer voice and visual search will increase their revenue by 30% in 2021. The visual search market is estimated to reach $28.4 billion by 2027.
To address increasing customer expectations, Salesforce announced the Einstein Visual Search. Einstein is an AI-based feature that enables users to search, shop, and discover promotions through photos. Shoppers upload an image from their mobile device and the Einstein Visual Search automatically finds a visually similar product.
An AI algorithm improves the search capability of Einstein when various users upload different images. SFCC enables image optimization and uploads from smartphones through services like Cloudinary. Retailers can extend the feature to include uploads from laptops or desktops.
2) Einstein Recommendation Engine
Recommendation engines enable retailers to offer the right product to the right customer at the right time. The result is an increased conversion rate and Customer Lifetime Value (CLV). Experts indicate that up to 31% of e-commerce store revenue comes from product offer personalization. Another report indicates that 35% of Amazon’s revenue comes from its recommendation engine.
Formerly, the Einstein recommendation engine was only available in the SFCC storefront. The new update enables retailers to integrate Einstein recommendations beyond their e-commerce site through an API. Merchants can now personalize user experience on mobile apps and across customer service and marketing channels.
3) Inventory Availability Service
This new feature enables e-commerce sores to activate a fulfillment center and in-store inventory across multiple digital channels in real-time. As a result, retailers can use programs like buy online, browse by store or, pick-up in store. The new feature also supports spike periods with high-volume requests like holidays.
4) Developer Sandboxes
Developer sandboxes isolate development work from your production environment until you are ready to deploy changes. Sandboxes provide a training environment for developers and enable them to test changes against users and versions of production data. You can set up a sandbox in minutes and deliver innovation to the e-commerce website faster.
5) Commerce API Explorer
The new Commerce API Explorer allows developers to search across an API library and test different functions and calls. This new one-stop-shop for all Commerce APIs in a single portal and easy-to-use user interface allows developers to design and test new experiences more efficiently.
6) Salesforce Commerce Cloud Pricing Model
SFCC has recently changed its pricing model to a range that enables smaller merchants to use the platform. The new pricing is based on a Gross Merchandise Volume (GMV) model and offers three core options—Starter, Growth and Unlimited. GVM is the total gross revenue of an e-commerce store in a given period.
The Starter option is for single store retailers and stores with up to two price books. The pricing starts at 1% of GMV. The Growth option is for retailers with up to five stores and up to 10 price books. The pricing is set to 2% of GMV. The Unlimited option is for merchants with larger demands.
The new pricing is more appealing because there are no significant ‘upfront’ license costs. However, this approach may not appeal to a niche business model or non-standard audiences. SFCC features are mainly focused on what the majority of B2C retailers find compelling.
Conclusion
Digital commerce is no longer just a shopping cart. In fact, 21.8% of the world’s population shops online, which makes online shopping responsible for 11.9% of all retail revenue worldwide. For this reason, retailers can leverage Salesforce Commerce Cloud to deliver enhanced shopping experience through AI-powered commerce services, APIs and a robust partner ecosystem. Some of the most well-known brands use Commerce Cloud, including Under Armour, Fila, GoPro and more.
For more info about the Commerce Cloud product click here.
It’s been another exciting year in the Salesforce ecosystem. We’ve seen expanded strategic partnerships, brand new products, and revolutionary integrations made possible by Salesforce’s savvy acquisitions in recent years (MuleSoft and Tableau, to name just a couple).
Salesforce is one of the fastest-moving tech ecosystems on the planet. That’s why it’s so important to stay on top of what’s happening in the world of a once humble CRM technology that’s now growing into the most-dominant business software across all markets and industries. We helped create a monster!
Released annually, the Mason Frank Salary Survey is the largest independent study of the Salesforce community. It’s an invaluable resource for Salesforce professionals, partners, and customers looking to gather insights into the working culture of the technology ecosystem, and to benchmark salaries, benefits and market trends.
With thousands of Salesforce professionals and employers surveyed, we can use Mason Frank’s research on product trends and job market depth to steer growth in businesses using Salesforce technology. For candidates, learning which skill sets, technologies, and certifications maximise earning potential is extremely useful.
You can, of course, download the report in full for free on their website, but here are my highlights from the 2019/20 survey report, along with findings that may be of particular interest to Italian members of the Ohana.
What is the top Salesforce product in 2020?
It’s unsurprising to see Sales Cloud maintain its position as the top Salesforce product in 2020, given that the technology is ultimately sales-focused, as well as the market dominance of Sales Cloud in the CRM world.
Service Cloud has risen to the third most-used Salesforce product over the last months, and this is unsurprising given the recent developments in the technology.
Just recently at Dreamforce, it was announced that Service Cloud would now benefit from integration with Amazon Connect, empowering contact centre agents with access to customer information across multiple disparate systems. Service Cloud Voice will also perform real-time sentiment analysis to gauge common customer problems and position relevant solutions to reduce average case handling time. It’s a great time to be a service cloud user!
Which Salesforce certifications maximise earning potential?
IT research firm IDC recently predicted that the demand for Salesforce technology would create 4.4 million new jobs by 2025. This is fantastic news for Salesforce professionals, who are already in high demand, but which certifications will open up the most opportunities and earning potential?
Of all respondents to Mason Frank’s survey, 71% were Salesforce-certified, with the Admin certification being the most popular cert (88% of certified talent held the Salesforce Certified Administrator credential). Of those who weren’t certified, 72% said they were working towards this certification.
Salesforce Developer was recently named in the world’s top 10 jobs, and we can see from the report that only 36% of certified talent hold the Platform Developer I certification; only 10% had achieved Platform Developer II. Given the current and anticipated skills gap, balanced against the low percentage of Salesforce-certified Developers, there’s clearly opportunity for those looking to move into this role.
Certification in any form is likely to open earning potential. The survey found that 44% of certified talent experienced a salary increase after certification, with an average pay rise of 24%. What’s more, two-thirds of these certified professionals indicated their employer paid for their cert exam, so risk/reward is firmly in the favour of ambitious professionals.
What other factors impact earning potential?
While certifications can count for quite a lot, they aren’t everything. By far the largest factor impacting earning potential is experience, with 86% of survey respondents considering this to be significant, compared to just 62% who felt the same about Salesforce certifications. Similarly, 76% also considered exposure to large products to be an important factor.
Only 31% of respondents thought a university degree was an essential factor in earning potential, and 30% considered it not important at all. This question was extended to whether they thought a degree was important when working generally with Salesforce, and 63% indicated they didn’t consider it important. Given the culture of the ‘accidental admin’, these feelings support the idea that Salesforce is an accessible technology even to those without a technical or academic background.
An Italian working in Salesforce
Members of the Milano and Cagliari Salesforce Developer Groups will share the sentiment that it can be difficult to find accurate local market data on Salesforce, but fortunately Mason Frank drills down salaries across all major European countries.
We can see that the average salary across core Salesforce roles (Admin/Dev/Functional & Technical Consultant) in Italy tends to start at around €20,000. Junior Admins can earn up to €26,000, while Junior Consultants and Developers can command salaries between €30,000 and €35,000.
Moving into senior roles, Admins tend to max out at around €32,000, which is where most make the jump into a specialist role. Senior Developers, Functional and Technical Consultants earn between €40,000 and €50,000.
Salesforce continues to enhance functionality of Marketing Cloud, primarily through integrations, making this skillset very in demand. It’s worth noting that even Junior Marketing Cloud Consultants and Specialists can start at €30,000 and earn up to €48,000 when they accrue enough experience. Looking for a specialist area? This could be it.
I hope this exploration of Mason Frank’s findings has been helpful—you should definitely be using this type of market intelligence to set you apart from your peers, so use it when finding your next job, employee, or Salesforce solution to fully benefit from the report.
Looking for more insights? Download the Mason Frank Salary Survey 19/20 in full for unique sentiments on technologies, salaries, and culture in the Salesforce ecosystem.
This post is brought to you by Luca Miglioli, an Information System Analyst that works at WebResults (Engineering group) in the Solution Team, an highly innovative team devoted to Salesforce products evangelization.
Some months ago, Google announced a secure-by-default model for cookies, enabled by a new cookie classification system. Changes concern in particular to the SameSite
attribute: on a cookie, this attribute controls its cross-domain site behavior, that is if no SameSite
attribute is specified, the Chrome 80 release sets cookies as SameSite=Lax
by default while previous to the Chrome 80 release (the current one), the default is SameSite=None
.
Ok, but what does it mean?
To safeguard more websites and their users, the new secure-by-default model assumes all cookies should be protected from external access unless otherwise specified: this is important in a cross-site scenario, where websites typically integrate external services for advertising, content recommendations, third party widgets, social embeds, etc. and external services may store cookies in your browser and subsequently access those file.
These changes are being made in Chrome, but it’s likely other browsers will follow soon: Mozilla and Microsoft have also indicated intent to implement these kind of changes in Firefox and Edge, on their own timelines. While the Chrome changes are still a few months away, it’s important that developers who manage cookies assess their readiness as soon as possible: that’s why Salesforce rapidly notifies its customers and partners with an annoucement (contained in the latest release notes, Spring ’20).
Especially, the announcement explains that:
- “Cookies don’t work for non-secure (HTTP) browser access. Use HTTPS instead.”
Check the URL of your website, if it starts withhttp://
and nothttps://
then you’ll need to get some form of SSL certificate. It’s probably worthwhile checking all of the links to your pages to make sure they are directing the thehttps://
version of the page. For example, make sure you are using the HTTPS links if you are embedding Pardot forms on your websites: this was not enabled for our organisation by default, so it’s likely that your organisation may need to do this. - “Some custom integrations that rely on cookies no longer work in Google Chrome. This change particularly affects but is not limited to custom single sign-on, and integrations using iframes.”
1st, 2nd and 3rd party integrations might be seariously impacted. Salesforce recommends to test any custom Salesforce integrations that rely on cookies owned and set by your integration. For example, an application not working as expected could be Marketing Cloud’s Journey Builder not rendering in the browser or Cloud Pages/Landing Pages/Microsites returning blank pages. If you determine that your account is affected by theSameSite
cookie change, you need to investigate your implementation code to ensure cookies are being utilized appropriately.
Ok, this looks a little bit scary, but don’t worry!
First, developers and admins can already test the new Chrome’s cookie behavior on the sites or cookies they manage, simply going to chrome://flags
in Chrome (type that in the URL bar) and enable the “SameSite by default cookies” and “Cookies without SameSite must be secure” experiments.
Second, developers can still opt in to the status quo of unrestricted use by explicitly setting SameSite=None; Secure
: only cookies with the SameSite=None; Secure
setting will be available for external access, provided they are being accessed from secure connections.
Third, If you manage cookies that are only accessed in a same-site context (same-site cookies) there is no required action on your part; Chrome will automatically prevent those cookies from being accessed by external entities, even if the SameSite attribute is missing or no value is set.
That’s all! You can still find more detailed info here:
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.
Salesforce is a Platform as a Service (PaaS) that provides developers with cloud-based environments and resources for building and deploying cloud-based applications. The platform offers a number of modules, each provides different resources.
AWS is a cloud computing vendor that offers a variety of cloud-based compute resources, such as object storage, data lakes, Artificial Intelligence (AI), and development resources. Salesforce and AWS are partners, and offer a number of connectivity options.
This article provides an overview of Salesforce services and technology, and key integrations you can create to establish a connection between Salesforce and AWS.
Salesforce for Developers: Main Services
Below, you’ll find a brief overview of the main Salesforce offerings for developers.
Lightning Platform
A PaaS module geared for fast apps delivery. Lightning’s cloud architecture is based on multitenancy, which means you share cloud resources with other users. Lightning comes with ready-made solutions, automation processes, and API integrations. You can create your own customizations metadata fields and with Apex code.
Heroku
A container-based cloud PaaS. It supports languages and frameworks such as Python, Clojure, Node.js, PHP, Java, Ruby, Scala, and Go. The main advantage of Heroku DX Developer Experience is the user-friendly dashboard, which provides easy-to-use metrics, and API and automation controls.
You can extend the capabilities of Heroku with services such as Enterprise (with 24x7x365 support with a 30 minute SLA), and Elements (additional languages and services, fully managed services). You can also host your Heroku operations in a private cloud, while maintaining smooth integration with Salesforce.
Einstien
Einstein Platform Services provide Artificial Intelligence (AI) resources for Salesforce developers. The purpose of the platform is to make your applications smarter, as the name implies. To that end, Einstein provides the following services:
- Einstein Vision—a computer vision module that enables image recognition
- Einstein Language—a natural language processing module
You can use Einstein Platform Services to train deep learning models in the cloud. As in any Salesforce service, it comes with APIs and Apex for integration and customization. Einstein Analytics enables AI-based data analyses.
Trailhead
A learning center for Salesforce skills, which offers a variety of educational modules. You can read guides, sign up for classes, and earn certifications. There are modules for companies, as well as a huge community-based hub. Everything is available online through the Trailhead website.
Salesforce Technology
Salesforce uses metadata, APIs, and containers to enable its technology. To enable quick deployment and scaling, Salesforce runs Kubernetes in production on bare-metal throughout their cloud infrastructure. This kind of architecture enables Salesforce to provide fine-grained microservices for Salesforce end-users and developers alike.
You use containers to pack your apps, metadata to describe the structure of your development artifacts, and APIs to enable connectivity between Salesforce services, third-party vendors, and connected devices and technology. These three main technologies make the Salesforce app development process fast and simple.
Salesforce and AWS Integrations
There are many use cases and integration methods. This section focuses on AWS, but you can find more information about Salesforce integration here.
1. Integrating Salesforce with Amazon S3
Amazon Simple Storage Service (Amazon S3) is an affordable object storage and archive offered by AWS. Typically, you would do this integration in order to build a data lake on S3. To move data from Salesforce to S3, you need to use the Amazon S3 connector. You’ll find more information here.
2. Integrating Salesforce with Amazon Lambda
AWS Lambda is a serverless compute service for processing events. To do this integration, you need a Salesforce account and an AWS account. Once you set up your account, you need to create a connection between Salesforce and AWS API gateway. You do this by creating open authentication. Then, you need to configure the data flow, and “tell” Salesforce to subscribe to AWS Lambda events. Here’s a step-by-step guide that shows you how to do this integration.
3. Integrating Salesforce with Amazon Athena
Amazon Athena is a serverless interactive query service for performing S3 data analysis with standard SQL. This type of integration is more complex, because you would need to create more than one integration. First, you need to connect Salesforce with S3, then connect Salesforce with Lambda. Once you transfer data from Salesforce to S3, you’ll be able to query it using Athena. Here’s a guide that shows you how to do this.
4. Integrating Salesforce with AWS PrivateLink
AWS PrivateLink creates secure and private connectivity between AWS services, AWS-hosted on-prem apps, and Virtual Private Clouds (VPCs). This is a built-in AWS feature that enables integration between AWS and SaaS offerings from AWS Partner Network (APN) Partners, such as Salesforce. In May, Heroku Postgres via PrivateLink, which enables connectivity between private Heroku Postgres databases and AWS VPCs, was made generally available. This connection is easy and fast. You can learn how to create it here.
Conclusion
Secure and simple integration between your development PaaS and your cloud resources is vital for business continuity. You’re using these APIs to transfer data, listen to data, and establish connectivity between systems, devices, and networks.
Native integration is a major advantage, because it was created especially for the two connected points. Security is typically covered well in these scenarios, and the connection fits the two vendors (or in house services) in a way that necessitates little to no configuration. In other cases, like integration #3 in this article, you would need to set up the connection.
Take the time to assess your situation, and find out what kind of integration you need. Experiment with free tiers, make use of community knowledge base, and keep security concerns in mind as you create your integrations. Data is valuable, and you don’t want just anyone listening on your connections.
Our week’s trailblazer is Claudio Marzorati, who will be listing some of his favorite Winter’20 Salesforce platform release.
Claudio is a Senior Salesforce Developer @ Sintegra s.r.l. (Milan). He worked with different retails that allowed him to increase his technical background on several aspects.
From analysis, to development, to the direct relationship with the customer, nothing is left to chance.
Other passions are running and travels!
In this article I summarize the most important features introduced in the new release.
General Update
Access the Recycle Bin in Lightning Experience
You no longer have to switch to Salesforce Classic to access the Recycle Bin. You can now view, restore, and permanently delete the items in your Recycle Bin and the org Recycle Bin. Now you can access the Recycle Bin by selecting it in the App Launcher under All Items or personalizing your navigation bar. Or add the Recycle Bin tab for your org in the Lightning App Builder.
View Records by Topic on the Topic Detail Page
If you enable topics from your organization, now you can view records by topics as in the below image.
You must enable a permission in your profile to use topics, as below. Actually (before Winter ’20) you have to navigatore from Setup – Topics for Object Settings in order to enable object by object which fields are candidate for topics detection.
Save Ink and Paper with Printable View for Lists
Printable view for List View is finally available also in Lightning Experience.
Manage Security Contacts for Your Org
Keeping key members of your org in the know about security incidents is important to us. You can now designate your org’s security contacts in Salesforce Help so that if an information security incident impacts your org, your contacts are notified. From Salesforce Help, click Support & Services | Manage next to Customer Security Contacts on the My Profile Settings tile. Here you can add, edit, or delete the email addresses of your security contacts.
Mobile APP
New Mobile App arrives the week of October 14, 2019
Give Your Users Custom Record Pages on Their Phones
Custom Lightning record pages are no longer restricted to desktop. Now you can create record pages tailored to the needs of your mobile users that they see only when viewing the page on a phone. When you create a record page in the Lightning App Builder, you can select a page template that matches the form factor that you’re designing the page for. Preview what the page looks like on different devices using the form factor switcher. When you activate your page, you can choose which form factors to make the record page available on: phone, desktop, or both, depending on which form factors its template supports.
List and Related List Components Are Optimized for the New Salesforce Mobile App
We updated the List View, Related List – Single, Related Lists, and Related List Quick Links components to support mobile navigation and the new Salesforce mobile app. When you place the List View component on a record page, a View More button loads more records in batches, so you can easily get more records or scroll to the information you want. The Related Lists component groups all your related lists in one section and no longer includes News and Twitter. The Related Lists component also uses a View More button for efficient navigation.
File
Set File Sharing to Inherit Record Settings
When attaching files to records, you can have the files inherit the sharing settings of those records. For instance, when a user can edit a record, you want them to be able to edit the files on that record, too. Now you can set the default sharing permissions on files that are attached to records. The preference lets files follow the sharing settings of the record.
For new orgs this option is enabled by default, in other case it must be activated from Setup – Salesforce Files – General Settings, as below.
With this option you can inherit the sharing setting of a record. For example a file attached before you enable this option appear as below
Then became
Remove a File from a Record Without Deleting It Everywhere
Sales Cloud
Contacts: Customize Opportunity Contact Roles for Better Tracking and Reporting
Opportunity contact role customization options give you the flexibility to track and attribute revenue to roles, titles, and individuals. With custom fields and page layouts, validation rules, and Apex triggers, you can design an Opportunity Contact Role to match your specific sales and reporting processes. You can capture new data, such as titles and roles, to help your sales reps be more efficient in targeting the right contacts.
Accounts: Customize Account Teams to Better Support Team Selling
Team selling involves complex account relationships. Now you can manage those relationships better in Salesforce. Collect more information by adding custom fields, buttons, and links to account team layouts. Use validation rules, Apex triggers, Process Builder (NEW), and workflow rules (NEW) with account teams to help keep data clean and minimize manual data entry. You can now report on account teams, too.
View Opportunities Owned by Your Team with One Click in Lightning Experience
The new My team’s opportunities list view is based on role hierarchy. Sales managers can use it to easily see all the opportunities owned by their direct and indirect reports without creating a list view.
Price Book Entries: Track Changes with Field History Tracking and Audit Trails
Price book entries now support field audit trails and field history tracking, so now you can easily track changes to price book entry fields.
Develop
Lightning Web Components: Open Source
To develop off-platform Lightning web components, see https://lwc.dev/
Add Lightning Web Components as Custom Tabs
<?xml version="1.0" encoding="UTF-8"?> <LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata"> <targets> <target>lightning__Tab</target> </targets> </LightningComponentBundle>
Share CSS Style Rules
To share CSS style rules, create a component that contains only a CSS file. Import the style rules from that CSS file into the CSS files of other Lightning web components.
DOM API Changes
Attention! In Winter ’20, code can’t use document or document.body to access the shadow tree of a Lightning web component. For example, code in a test can’t call document.querySelector() to select nodes in a Lightning web component’s shadow tree.
To fix see the guide: https://releasenotes.docs.salesforce.com/en-us/winter20/release-notes/rn_lwc_dom_api.htm
Aura Components in the ui Namespace Are Being Retired
The ui components are scheduled for retirement in all Salesforce orgs in Summer ’21. Use similar components in the lightningnamespace instead. Retiring our legacy components enables us to focus on components that match the latest web standards in performance, accessibility, user experience, and internationalization. See the list of replacement: https://releasenotes.docs.salesforce.com/en-us/winter20/release-notes/rn_aura_ui_deprecate.htm
Callouts Are Excluded from Long-Running Request Limit
Every org has a limit on the number of concurrent long-running Apex requests. This limit counts all requests that run for more than 5 seconds (total execution time). However, HTTP callout processing time is no longer included when calculating the 5-second limit. We pause the timer for the callout and resume it when the callout completes.
Changed LWC
See full list: https://releasenotes.docs.salesforce.com/en-us/winter20/release-notes/rn_lwc_components.htm
New Apex Classes
Formula Class in the System NamespaceThe new System.Formula class contains the recalculateFormulas method that updates (recalculates) all formula fields on the input sObjects.
At the moment that’s all.
See you in Spring ’20!
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 10 certifications, including Certified Application Architect
– Holds a Physics degree
– Leader of Limerick, Ireland Developer Group
– Married since 1994, has a daughter
– Loves watching sci-fi movies and good comedies
– Lives in Limerick, Ireland
Introduction to a familiar situation
Let’s face it with honesty and courage: writing test methods for our Apex code is (very often) boring and time-consuming, usually because of the difficulty regarding the creation of test data. In most implementations we can see a mediocre result, which could be described as a class (e.g. DataFactory
) including static methods that generate and insert SObject records. The following code describes this inefficient pattern:
public class DataFactory { public static List<Account> createAccounts(Integer numRecords) { List<Account> results = new List<Account>(); for (Integer counter = 1; counter <= numRecords; counter++) { Account record = new Account(); // define fields record.Name = ... ... results.add(record); } return results; } // other methods }
Using this logic, we can execute our Data Factory method with:
List<Account> accounts = DataFactory.createAccounts(100); insert accounts;
to create and insert 100 accounts. As you can see, one issue here is how we generate data for other fields in our test method. But things get worse when we create related SObjects, for example contacts with accounts. Let’s examine a new method createContacts
, based on the previous pattern:
public static List<Contact> createContacts(Integer numRecords) { List<Account> accounts = createAccounts(10); // optionally process accounts and manually add/modify Account fields insert accounts; List<Contact> results = new List<Contact>(); for (Integer counter = 1; counter <= numRecords; counter++) { Contact record = new Contact(); // define fields record.LastName = ... record.AccountId = ... // get the ID from accounts list ... results.add(record); } return results; }
When we call the above method from our test method, e.g. with
List<Contact> contacts = DataFactory.createContacts(100); // optionally process contacts and manually add/modify Contact fields insert contacts;
we certainly insert 10 accounts and 100 contacts related to these accounts. But what if we need to modify the generated accounts or we need to insert additional Account fields? This pattern doesn’t allow to do this. In more complex scenarios, we may have to insert many more SObjects. The final result is a Data Factory class with methods that create test data BUT without the ability to easily modify the created records.
I can finally hear your question: Do you propose a better approach? Is there a more flexible and easier way to do it? And the answer is YES!
Making a Data Factory Library with Forceea Templates
Forceea Data Factory framework is an open source GitHub project, with the following capabilities:
- creates records for standard or custom objects, for any standard or custom field
- automatically definines the required fields
- creates static or random data for fields of any data type: Integer, Currency, Double, Date, Datetime, Time, Boolean, String, TextArea, Percent, Reference, Email, Phone, URL, Base64 (BLOB), Picklist and MultiPicklist
- creates real random first and last names
- creates real random addresses with street, zip code, city, region/state and country
- creates serial data for date, datetime, integer, decimal, currency and percent
- can copy data from another field of the same record or a lookup record
- can create the same random data, using a pseudo-random number generator
- handles record types and field dependencies (dependent picklists)
- supports record groups for inserting and deleting records
- validates the definitions based on the field data type
- provides many methods to get/insert the created records, add/delete field definitions, get the errors, configure the amount of information returned during run-time (debug log) and more
- includes an extended error messaging system
and will be our main tool to build a powerful and flexible DataFactory
class (our Data Factory Library). This class will include static methods, our Templates, which actually will not insert any data at all! What these Templates do is to instruct Forceea how to generate the data.
Let’s meet our first Template:
public class DataFactory { // returns definitions for: Accounts public static FObject getDefAccounts() { FObject result = new FObject('Account'); result.setDefinition('Name', 'static value(Company)'); result.setDefinition('Name', 'serial type(number) from(1) step(1) scale(0)'); result.setDefinition('Phone', 'random type(phone) format("(30) DDD dD-00-DD")'); result.setDefinition('Industry', 'random type(picklist)'); result.setDefinition('Site', 'random type(url)'); return result; } }
Obviously the method getDefAccounts
returns an FObject
– the class instance for generating data with Forceea. Reading the code you can see that we define accounts with random values for all required fields. So, these are our guidelines so far:
- Create a
DataFactory
class - Create a master Template for each SObject, with the name
getDef<SObjectApiName>s
, e.g.getDefCases
- Use the above pattern for each master Template, defining all common required fields (the fields required by any record type)
- For the Template field definitions, use definitions which generate
– random values for picklist fields
– random values for fields with date/datetime, checkbox, email, phone, currency, percent, address, and text area data types
– serial values for the Name field (notice how we did it in thegetDefAccounts
method)
Even though it’s not obvious from the above code, Forceea (by default) will find and insert field definitions for any required fields we haven’t defined, but it’s a best practice to define all these required fields in our master Template.
The setDefinition
method sets the expected values for each field, using a descriptive data generation language called Dadela. For example, the definition random type(picklist) except(Hot)
for the Rating
field generates random values from the pisklist field’s values, excluding the value “Hot”.
Now, for every record type of each SObject create a new Template, for example:
// returns definitions for: Accounts with MediumAccount record type public static FObject getDefMediumAccounts() { FObject result = getDefAccounts(); result.setDefinition('RecordTypeId', 'static value(MediumAccount)'); result.setDefinition('NumberOfEmployees', 'random type(number) from(10) to(100) scale(-1)'); result.setDefinition('AnnualRevenue', 'random type(number) from(1000000) to(10000000) scale(3)'); return result; }
This new Template builds on the master Template getDefAccounts
, defining only the record type and the additional fields which are related to this specific record type (NumberOfEmployees
and AnnualRevenue
). All other defined fields from the master Template are used as they are, so we don’t duplicate any field definitions. Our additional guideline:
- Create a record type Template for each SObject’s record type, with the name
getDef<RecordTypeDescription><SObjectApiName>s
, e.g.getDefServiceCases
This is it! This is what we need to do for SObjects which don’t include a Lookup or Master-detail relationship. But how do we create templates for those SObjects that they do include a relationship? Let’s see how, with our second SObject:
// returns definitions for: Accounts - Contacts public static Map<String, FObject> getDefContactsAndAccounts() { // initialize Map<String, FObject> fobjectsByName = new Map<String, FObject>(); String objName = ''; // Account objName = 'Account'; FObject objAccount = getDefMediumAccounts(); fobjectsByName.put(objName, objAccount); // Contact objName = 'Contact'; FObject objContact = new FObject(objName); objContact.setDefinition('FirstName', 'random type(firstname) group(name)'); objContact.setDefinition('LastName', 'random type(lastname) group(name)'); objContact.setDefinition('AccountId', 'random lookup(Account) source(forceea)'); objContact.setDefinition('LeadSource', 'random type(picklist)'); objContact.setDefinition('Title', 'random type(list) value(Developer, CFO, Account Manager, CEO, Logistics Manager)'); objContact.setDefinition('Email', 'random type(email)'); fobjectsByName.put(objName, objContact); return fobjectsByName; }
I think you’ll agree that this Template is more interesting. Its first lines use the previously created record type Template getDefMediumAccounts
to define the Account fields. We could also
- insert one or more new field definitions using
objAccount.setDefinition('FieldApiName', '<Field Definition>')
beforefobjectsByName.put(..)
or - modify an existing field definition – for example to define a static value for the (existing)
NumberOfEmployees
field, we can use
// delete previous field definitionsobjAccount.deleteFieldDefinitions('NumberOfEmployees');
// add new definition
objAccount.setDefinition('NumberOfEmployees', 'static value(100)');
Finally, we insert the FObject for the Account into the fobjectsByName
map and we proceed to the field definitions for contacts.
If you noticed the definition objContact.setDefinition('AccountId', 'random lookup(Account) source(forceea)'
and asked yourself what is source(forceea)
, this is a way to request that the framework will get the related account IDs from the previously inserted accounts. There are a lot of lookup field definitions that will certainly need your attention if you start developing with the framework, but for the moment let’s not go any deeper.
In many implementations we have a set of dependent SObjects. Let’s say that in order to create records for the Case
, we have to create records for Account and Contact (and perhaps records for 4 more other SObjects) using a Template like getDefCasesAndAccountsContacts
. This is a kind of quite complex data factory process, which can be handled by Forceea very smoothly – you just add the following pattern for each requird SObject:
objName = '<SObjectApiName>'; FObject objMySObject = new FObject(objName); objMySObject.setDefinition('<FieldApiName>', '<Field Definition>'); // other required field definitions fobjectsByName.put(objName, objMySObject);
Our last guidelines:
- Document the SObjects that are returned by any Template, with the correct order, e.g.
// returns definitions for: Accounts - Contacts - Cases
- Use the format
getDef<SObjectName>And<RelatedSObjects>
for Templates with related SObjects, e.g.getDefCasesAndAccountsContacts
Finally, insert the following method in your DataFactory
class:
public static void insertRecords(Map<String, Fobject> fobjects) { for (FObject obj: fobjects.values()) { obj.insertRecords(true); } }
The test method
After you have created your Templates, let’s see how you can take full advantage of them. We’ll use getDefContactsAndAccounts
as an example. In your test method, the first step is to define a map:
Map<String, FObject> fObjects = DataFactory.getContactsAndAccounts();
The second step is to modify any SObject definitions, if it’s needed. For our example here, we’ll make things a little more difficult with the following requirements:
- For the Account: we need to insert 10 records, with a) random values for the
Description
field and b) any picklist value except “Hot” for theRating
field. - For the Contact: we need to insert 100 records, with the random values from 1/1/1960 to 31/12/2000 for the
Birthdate
field. - All other fields will get the default definitions from the their Templates.
// initialize Map<String, FObject> fobjectsByName = DataFactory.getDefContactsAndAccounts(); FObject objAccount = fobjectsByName.get('Account'); FObject objContact = fobjectsByName.get('Contact'); // define number of records objAccount.records = 10; objContact.records = 100; // optionally modify an existing definition objAccount.deleteFieldDefinitions('Rating'); // optionally define new field definitions objAccount.setDefinition('Description', 'random type(text) minlength(10) maxlength(40)'); objAccount.setDefinition('Rating', 'random type(picklist) except(Hot)'); objContact.setDefinition('Birthdate', 'random type(date) from(1960-1-1) to(2000-12-31)'); // insert records DataFactory.insertRecords(fobjectsByName);
Using the above pattern, it’s easy for everyone to understand what changes have been made in comparison to the getDefContactsAndAccounts
Template.
Did you say that we need the inserted contacts for our System.assert
? No problem at all! Just use:
List<Contact> contacts = objContact.getInsertedRecords(); OR List<Contact> contacts = FObject.getInsertedRecords('Contact');
Conclusion
Forceea Templates are easy to implement and they are powerful enough to help you write your Apex test methods faster. The most important is that
- your test methods will be more understandable by any other developer, and
- the new test methods will require less effort to develop
The best way to see if this solution is suitable for you is to start working with it and create a pilot version of your new DataFactory
class. If you’re not satisfied with your existing Data Factory (or if you don’t have a Data Factory at all), why don’t you give it a try?
I’ve recently published a post on Mason Frank’s blog, where I wrote about some Salesforce Developer hacks. Here’s a quick summary below and link to the full article, I hope you enjoy!
I’m lazy. Most developers are! This is not necessarily a bad thing, and Bill Gates summarizes this concept easily by saying “I choose a lazy person to do a hard job. Because a lazy person will find an easy way to do it“.
Don’t misunderstand this statement—laziness is not staying on your couch the whole day and watching all of Game of Thrones in one sitting. It’s a different kind of being lazy.
The lazy developer is the one that, in order to avoid doing anything more than once, tries to automate it or knows exactly when that line of code is stored (they may actually not be able to write it themselves and thus have to Google for it).
That’s exactly what I saw in my own 12 years of work experience: the best developer is not the one who knows exactly which Apex function has which parameters (if you can, well… congratulations!), but the one who quickly knows how to solve a problem and where to look to maximize productivity (and happiness for the project manager or the customer).
Let’s start talking abount Salesforce Blockchain, with our guest blogger Priscilla Sharon, Salesforce Business Solution Executive for DemandBlue.
DemandBlue is in the business of helping its customers maximize their Salesforce investment through predictable outcomes. As we thrive in an era of cloud-based Infrastructure, Platform and Software services, DemandBlue has pioneered “Service-as-a-Service” through a value-based On Demand Service model that drives bottom-line results. They foster innovation through “Continuous Engagement and On Demand Execution” that offers their customers Speed, Value and Success to achieve their current and future business objectives.
Demystifying Salesforce Blockchain
Salesforce is always a company that is looking ahead to the next big in technology, whether it is mobile, social, IoT or Artificial Intelligence. The world’s leading CRM Company recently took its wraps off Salesforce Blockchain, its new low-code platform enabling organizations to share verified and distributed data sets across a trusted network of partners and third parties. With the new launch announced at TrailheaDX, the fourth annual developer conference, Salesforce is bringing the combined capabilities of its World’s #1 CRM and low-code Blockchain platform to enable organizations to create Blockchain networks, workflows and apps that have the potential to deliver holistic customer experiences.
Leading global brands are already taking advantage of this new platform. Arizona State University uses Blockchain for Salesforce to design and create an educational network that allows universities to securely verify and share information. IQVIA, a global leader in advanced analytics, technology solutions and contract research services has partnered with Salesforce to explore an array of possible blockchain technology initiatives including regulatory information management and drug label processing. S&P Global Ratings, a key provider of ratings, benchmarks, analytics and data for the global capital and commodity markets is leveraging the platform to review and approve new business bank accounts with improved agility. And more leading brands are exploring the infinite possibilities of delivering seamless customer experiences using the Salesforce Blockchain platform.
Take a deeper dive into the intricacies and the nuances of the brand-new Salesforce Blockchain platform that packs unique and incredible features, and promises to be the first low-code Blockchain platform for the CRM.
Salesforce Blockchain – The Technology
Blockchain Technology for Salesforce is built on Hyperledger Sawtooth, an open source modular platform for designing, deploying, and running distributed ledgers, and it’s customized for Salesforce Lightning, Salesforce’s front-end framework for app development. It consists of three components:
- Salesforce Blockchain Builder – a developer toolset for building blockchain applications
- Blockchain Connect – integrates blockchain actions with Salesforce apps
- Blockchain Engage – enables customers to invite parties to blockchain apps created within Salesforce
Businesses can take advantage of the platform to build and manage blockchain networks, apps and smart contracts using Salesforce’s powerful low-code capabilities. Customers can even create and share a blockchain object using the same process as they already do for any CRM data object in Salesforce without the need for writing code.
We help companies build for the future by making breakthrough technology accessible and easy to use — today we are doing just that with Salesforce Blockchain. Now, companies will be able to create new ecosystems and achieve new levels of interconnectivity through trusted partner networks
Bret Taylor, President and Chief Product Officer of Salesforce at TrailheaDX
3 undeniable Reasons to Love it
Salesforce Blockchain is deeply customized for Salesforce Lightning and is uniquely designed to lower the barrier for creating trusted partner networks. It enables companies to slickly bring together authenticated, distributed data and CRM processes. With Salesforce Blockchain integration you can:
- Build Blockchain Networks with Clicks, not Code—Salesforce platform is well received by developers for its unique low-code capabilities. With the newly launched Salesforce Blockchain platform, you can slickly build and maintain blockchain networks, apps and smart contracts, using just clicks, not code
- Create Actionable Blockchain Data—Make blockchain data actionable through native integration with Salesforce. Layer complex blockchain data along with existing sales, service and marketing workflows like search queries and process automation. Also, you can now run Einstein-powered artificial intelligence algorithms that integrate blockchain data into sales forecasts, predictions and much more
- Lower Barrier to Entry for Partners—Engage partners, distributors and intermediaries easily to leverage Salesforce Blockchain. Even more, companies can now pull in APIs, pre-built apps and integrate any existing blockchains with Salesforce. With an intuitive engagement layer, organizations can also easily interact with and add third parties to their blockchain with a few clicks and simple authentication thereby creating trust networks
Salesforce Blockchain is currently available to select design partners and will be generally available in 2020.