<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Video Tutorial &#8211; Jitendra Zaa</title>
	<atom:link href="https://www.jitendrazaa.com/blog/tag/video-tutorial/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.jitendrazaa.com/blog</link>
	<description>AI, Salesforce, ServiceNow &#38; Enterprise Tech Guides</description>
	<lastBuildDate>Tue, 17 Feb 2026 16:02:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
<site xmlns="com-wordpress:feed-additions:1">87744916</site><atom:link rel="search" type="application/opensearchdescription+xml" title="Search Jitendra Zaa" href="https://www.jitendrazaa.com/blog/wp-json/opensearch/1.1/document" />	<item>
		<title>Salesforce Business Rules Engine Guide</title>
		<link>https://www.jitendrazaa.com/blog/salesforce/salesforce-business-rules-engine-guide/</link>
					<comments>https://www.jitendrazaa.com/blog/salesforce/salesforce-business-rules-engine-guide/#comments</comments>
		
		<dc:creator><![CDATA[Jitendra Zaa]]></dc:creator>
		<pubDate>Sat, 20 Dec 2025 16:32:09 +0000</pubDate>
				<category><![CDATA[Salesforce]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[BRE]]></category>
		<category><![CDATA[Industry Clouds]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Video Tutorial]]></category>
		<guid isPermaLink="false">https://www.jitendrazaa.com/blog/?p=30745</guid>

					<description><![CDATA[JZ Salesforce Industries Jitendra's Blog COMPLETE IMPLEMENTATION GUIDE Salesforce Business Rules Engine (BRE) Master no-code decision automation with Expression Sets, Decision Matrices, and Decision Tables for Insurance, Healthcare, and Financial Services Reading time: ~18 minutes | Last Updated:...]]></description>
										<content:encoded><![CDATA[<p><img src="https://i0.wp.com/www.jitendrazaa.com/blog/wp-content/uploads/2025/12/BRE-Guide-Featured-16x9-1.png?fit=1024%2C576&#038;ssl=1" alt="Salesforce Business Rules Engine Guide" style="max-width:100%;height:auto;" /></p>COMPLETE IMPLEMENTATION GUIDE<br />
 <br />
<br />
<strong>Salesforce Business Rules Engine (BRE)</strong><br />
<br />
 Master no-code decision automation with Expression Sets, Decision Matrices, and Decision Tables for Insurance, Healthcare, and Financial Services<br />
<br />
 <br />
 <br />
 <i class="fas fa-clock"></i> Reading time: ~18 minutes<br />
 |<br />
 <i class="fas fa-calendar-alt"></i> Last Updated: December 2025<br />
 <br />
 <br />
 <br />
<br />
 <br />
 <br />
 <br />
 3<br />
 Core Components (Expression Sets, Decision Matrices, Decision Tables)<br />
 <br />
 <br />
 50K<br />
 Free BRE Calls/Month with Industry Clouds<br />
 <br />
 <br />
 1M<br />
 Maximum Rows Decision Tables Can Read<br />
 <br />
 <br />
 No-Code<br />
 Visual Designer for Business Users<br />
 <br />
 <br />
<br />
 <br />
 <br />
<br />
 <br />
 <br />
 <br />
<br />
<strong><br />
 1<br />
 What is Salesforce Business Rules Engine?<br />
 </strong><br />
<br />
 <br />
 <br />
 <i class="fas fa-lightbulb"></i><br />
 <br />
 <strong>Quick Answer:</strong> Salesforce Business Rules Engine (BRE) is a no-code/low-code framework within Salesforce Industries that enables business users to create, manage, and execute complex business logic using visual designers. It contains three core tools: Expression Sets (calculation engine), Decision Matrices (lookup tables), and Decision Tables (object-based rules).<br />
 <br />
 <br />
<br />
 According to the <a href="https://help.salesforce.com/s/articleView?id=ind.business_rules_engine.htm&language=en_US&type=5" target="_blank">official Salesforce documentation</a>, Business Rules Engine is a suite of services, components, and objects that apply advanced logic and automate complex decision-making. The engine powers guided interactions and workflows for virtually any industry process, operating at true business-to-consumer scale capable of maintaining thousands of rules and automating millions of interactions.<br />
<br />
 What makes BRE unique is its ability to put decision-making power directly into the hands of business users. Instead of waiting for developers to write and deploy Apex code every time a business rule changes, administrators and business analysts can create, test, and modify rules using intuitive visual tools.<br />
<br />
 <br />
<br />
...<p style="margin-top:20px;"><a href="https://www.jitendrazaa.com/blog/salesforce/salesforce-business-rules-engine-guide/"><strong>→ Read the full article on jitendrazaa.com</strong></a></p>]]></content:encoded>
					
					<wfw:commentRss>https://www.jitendrazaa.com/blog/salesforce/salesforce-business-rules-engine-guide/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">30745</post-id>	</item>
		<item>
		<title>Talk to any PDF document using AI</title>
		<link>https://www.jitendrazaa.com/blog/salesforce/talk-to-salesforce-release-notes-using-open-ai-langchain-chroma/</link>
					<comments>https://www.jitendrazaa.com/blog/salesforce/talk-to-salesforce-release-notes-using-open-ai-langchain-chroma/#respond</comments>
		
		<dc:creator><![CDATA[Jitendra]]></dc:creator>
		<pubDate>Fri, 15 Dec 2023 00:49:36 +0000</pubDate>
				<category><![CDATA[Salesforce]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Chroma]]></category>
		<category><![CDATA[Embedding]]></category>
		<category><![CDATA[Lambda]]></category>
		<category><![CDATA[OpenAI]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[RAG]]></category>
		<category><![CDATA[Video Tutorial]]></category>
		<guid isPermaLink="false">https://www.jitendrazaa.com/blog/?p=11240</guid>

					<description><![CDATA[JZ AI & Machine Learning Jitendra's Blog AI TUTORIAL 2026 Talk to PDF Documents Using AI Build a conversational AI with RAG, LangChain, OpenAI embeddings, and ChromaDB vector database Reading time: ~16 minutes | Last Updated: February 2026 RAG Retrieval-Augmented Generation 3072 Max Embedding...]]></description>
										<content:encoded><![CDATA[<p><img src="https://i0.wp.com/www.jitendrazaa.com/blog/wp-content/uploads/2023/12/Salesforce-Langchain-Python-OpenAI-AWS-Lambda3.png?fit=1024%2C576&#038;ssl=1" alt="Talk to any PDF document using AI" style="max-width:100%;height:auto;" /></p>AI TUTORIAL 2026<br />
 <br />
<br />
<strong>Talk to PDF Documents Using AI</strong><br />
<br />
 Build a conversational AI with RAG, LangChain, OpenAI embeddings, and ChromaDB vector database<br />
<br />
 <br />
 <i class="fas fa-clock"></i> Reading time: ~16 minutes<br />
 |<br />
 <i class="fas fa-calendar-alt"></i> Last Updated: February 2026<br />
 <br />
 <br />
 <br />
<br />
 <br />
 <br />
 <br />
 RAG<br />
 Retrieval-Augmented Generation<br />
 <br />
 <br />
 3072<br />
 Max Embedding Dimensions (2026)<br />
 <br />
 <br />
 5x<br />
 Cost Reduction (text-embedding-3)<br />
 <br />
 <br />
 35-50%<br />
 Better Complex Query Handling<br />
 <br />
 <br />
<br />
 <br />
 <br />
<br />
 <br />
 <br />
 <br />
<br />
<strong><br />
 1<br />
 What is RAG (Retrieval-Augmented Generation)?<br />
 </strong><br />
<br />
 <br />
 <br />
 <br />
 <i class="fas fa-sync-alt"></i><br />
 <br />
 <br />
 <strong>Article Updated: February 2026</strong><br />
 This article has been refreshed with the latest RAG best practices, updated embedding models (text-embedding-3), and current LangChain/ChromaDB features. Originally published December 2023.<br />
<br />
 <br />
 <br />
<br />
 <br />
 <br />
 <i class="fas fa-lightbulb"></i><br />
 <br />
 <strong>Quick Answer:</strong> RAG (Retrieval-Augmented Generation) is a technique that enhances AI responses by first retrieving relevant information from a knowledge base, then using that context to generate accurate, fact-grounded answers.<br />
 <br />
 <br />
<br />
 This tutorial is part of the AI series where we explore building practical AI applications. In this post, I share the source code and video tutorial for using <a href="https://docs.langchain.com/oss/python/langchain/quickstart" target="_blank">LangChain</a> with <a href="https://www.trychroma.com/" target="_blank">ChromaDB</a> to create a conversational AI that can talk to PDF documents.<br />
<br />
 The concept is known as <strong>RAG - Retrieval-Augmented Generation</strong>. We use the ChromaDB vector database to store embedding vectors locally, which significantly reduces API costs from OpenAI while enabling fast semantic search.<br />
<br />
 <br />
 <i class="fas fa-info-circle" style="font-size: 24px; color: #8b5cf6;"></i><br />
 <br />
...<p style="margin-top:20px;"><a href="https://www.jitendrazaa.com/blog/salesforce/talk-to-salesforce-release-notes-using-open-ai-langchain-chroma/"><strong>→ Read the full article on jitendrazaa.com</strong></a></p>]]></content:encoded>
					
					<wfw:commentRss>https://www.jitendrazaa.com/blog/salesforce/talk-to-salesforce-release-notes-using-open-ai-langchain-chroma/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">11240</post-id>	</item>
		<item>
		<title>Talk to Salesforce Data Using OpenAI, Langchain &#038; Chroma</title>
		<link>https://www.jitendrazaa.com/blog/salesforce/talk-to-salesforce-data-using-openai-langchain-chroma/</link>
					<comments>https://www.jitendrazaa.com/blog/salesforce/talk-to-salesforce-data-using-openai-langchain-chroma/#comments</comments>
		
		<dc:creator><![CDATA[Jitendra]]></dc:creator>
		<pubDate>Fri, 15 Dec 2023 00:41:59 +0000</pubDate>
				<category><![CDATA[Salesforce]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Chroma]]></category>
		<category><![CDATA[Embedding]]></category>
		<category><![CDATA[Lambda]]></category>
		<category><![CDATA[OpenAI]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[RAG]]></category>
		<category><![CDATA[VectorDB]]></category>
		<category><![CDATA[Video Tutorial]]></category>
		<guid isPermaLink="false">https://www.jitendrazaa.com/blog/?p=11235</guid>

					<description><![CDATA[JZ Salesforce + AI Jitendra's Blog RAG TUTORIAL Talk to Salesforce Data Using OpenAI, LangChain & ChromaDB Build a conversational AI that understands your Salesforce CRM data using Retrieval-Augmented Generation (RAG) Reading time: ~6 minutes | Last Updated: February 2026 RAG Architecture Pattern...]]></description>
										<content:encoded><![CDATA[<p><img src="https://i0.wp.com/www.jitendrazaa.com/blog/wp-content/uploads/2023/12/Salesforce-Langchain-Python-OpenAI-AWS-Lambda2.png?fit=1024%2C576&#038;ssl=1" alt="Talk to Salesforce Data Using OpenAI, Langchain &#038; Chroma" style="max-width:100%;height:auto;" /></p>RAG TUTORIAL<br />
 <br />
<br />
<strong>Talk to Salesforce Data Using OpenAI, LangChain & ChromaDB</strong><br />
<br />
 Build a conversational AI that understands your Salesforce CRM data using Retrieval-Augmented Generation (RAG)<br />
<br />
 <br />
 <i class="fas fa-clock"></i> Reading time: ~6 minutes<br />
 |<br />
 <i class="fas fa-calendar-alt"></i> Last Updated: February 2026<br />
 <br />
 <br />
 <br />
<br />
 <br />
 <br />
 <br />
 RAG<br />
 Architecture Pattern<br />
 <br />
 <br />
 4x<br />
 ChromaDB Rust Performance Boost<br />
 <br />
 <br />
 text-embedding-3<br />
 Recommended Model<br />
 <br />
 <br />
 Python<br />
 Implementation Language<br />
 <br />
 <br />
<br />
 <br />
 <br />
<br />
 <br />
 <br />
 <br />
<br />
<strong><br />
 1<br />
 What is RAG (Retrieval-Augmented Generation)?<br />
 </strong><br />
<br />
 <br />
 <br />
 <br />
 <i class="fas fa-sync-alt"></i><br />
 <br />
 <br />
 <strong>Article Updated: February 2026</strong><br />
 This article has been refreshed with the latest LangChain patterns, ChromaDB improvements, and OpenAI embedding model recommendations. Originally published December 2023.<br />
<br />
 <br />
 <br />
<br />
 <br />
 <br />
 <i class="fas fa-sparkles"></i> What's New in This Update (February 2026)<br />
 <br />
 • <strong>Updated:</strong> LangChain documentation link (now at docs.langchain.com)<br />
<br />
 • <strong>Added:</strong> ChromaDB 2025 Rust-core performance improvements (4x faster)<br />
<br />
 • <strong>Added:</strong> OpenAI text-embedding-3 model recommendations<br />
<br />
 • <strong>Added:</strong> Salesforce Agentforce native RAG capabilities<br />
<br />
 • <strong>Added:</strong> 2026 production RAG best practices<br />
<br />
 <br />
 <br />
<br />
 <br />
 <br />
 <i class="fas fa-lightbulb"></i><br />
 <br />
 <strong>Quick Answer:</strong> RAG (Retrieval-Augmented Generation) combines vector search with LLMs to answer questions using your own data. It retrieves relevant context from a knowledge base and feeds it to the AI for accurate, grounded responses.<br />
 <br />
 <br />
<br />
 This is blog post 2 in my AI series. In this tutorial, I'll share source code and a video walkthrough for using <a href="https://docs.langchain.com/oss/python/langchain/quickstart" target="_blank">LangChain</a> with OpenAI embeddings and <a href="https://www.trychroma....<p style="margin-top:20px;"><a href="https://www.jitendrazaa.com/blog/salesforce/talk-to-salesforce-data-using-openai-langchain-chroma/"><strong>→ Read the full article on jitendrazaa.com</strong></a></p>]]></content:encoded>
					
					<wfw:commentRss>https://www.jitendrazaa.com/blog/salesforce/talk-to-salesforce-data-using-openai-langchain-chroma/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">11235</post-id>	</item>
		<item>
		<title>Converting Salesforce Data into Embeddings with OpenAI and AWS Lambda</title>
		<link>https://www.jitendrazaa.com/blog/salesforce/converting-salesforce-data-into-embeddings-with-openai-and-aws-lambda/</link>
					<comments>https://www.jitendrazaa.com/blog/salesforce/converting-salesforce-data-into-embeddings-with-openai-and-aws-lambda/#comments</comments>
		
		<dc:creator><![CDATA[Jitendra]]></dc:creator>
		<pubDate>Wed, 13 Dec 2023 17:52:34 +0000</pubDate>
				<category><![CDATA[Salesforce]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[Embedding]]></category>
		<category><![CDATA[Lambda]]></category>
		<category><![CDATA[OpenAI]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[RAG]]></category>
		<category><![CDATA[Video Tutorial]]></category>
		<guid isPermaLink="false">https://www.jitendrazaa.com/blog/?p=11191</guid>

					<description><![CDATA[Discover how to leverage OpenAI's powerful embedding capabilities to transform your Salesforce data into insightful, actionable embeddings. This guide provides a step-by-step process, complete with code, to seamlessly integrate Salesforce data with OpenAI's advanced AI models, unlocking new dimensions of data analysis and decision-making.]]></description>
										<content:encoded><![CDATA[
<p>Last week on Dec 7, I had an opportunity to speak in the Salesforce Alpharetta Developer Group meeting. This is a 3 part blog series, explaining samples &amp; demos I covered in that group meet. To get information about future sessions, you can join <a href="https://trailblazercommunitygroups.com/salesforce-developer-group-alpharetta-united-states/">this group </a>and also the <a href="https://trailhead.salesforce.com/trailblazer-community/groups/0F93A000000HUpbSAG?tab=discussion&amp;sort=LAST_MODIFIED_DATE_DESC">chatter group to get content</a>.</p>



<p>Let&#8217;s start with the basics. </p>



<h2 class="wp-block-heading">What is Embedding?</h2>



<p>Imagine you have a big box of crayons with many different colors. Each crayon is like a word or a picture. Now, suppose you want to organize these crayons so that similar colors are close to each other. For example, different shades of blue are grouped together, and so are the shades of red. This makes it easier for you to find and compare colors.</p>



<p>In the world of AI, embeddings do something similar but with words, pictures, or other kinds of information. Instead of crayons, we have lots of data, like words in a book or images. An embedding is a special method that sorts this data into groups of similar things.</p>



<p>For example, in a book, the words &#8220;happy&#8221; and &#8220;joyful&#8221; might be close together in this sorted space because they mean similar things. This helps AI models quickly understand and work with lots of information, like helping you find a book you might like or understanding what you mean when you talk to a computer.</p>



<p>So, embeddings are like a smart way of organizing a huge box of crayons (or data) so that similar things are close together, making it much easier and faster to use them for different tasks!</p>



<p>If we want to work with AI on Salesforce, very first step that needs to happen is to convert your data to embedding. In this case we would convert Salesforce data to embedding from lambda function using OpenAI API. Eventually, we would use some kind of library like langChain that can retrieve similar data to enrich prompts and get more contextual responses which otherwise would not be possible, this process is known as RAG &#8211; <strong>Retrieval-Augmented Generation</strong>.</p>



<span id="more-11191"></span>



<p><strong>Prerequisite</strong></p>



<ul class="wp-block-list">
<li>Salesforce account with API access</li>



<li>AWS account with Lambda and IAM access</li>



<li>OpenAI API key</li>



<li>Basic understanding of Python programming</li>
</ul>



<p>AWS Lambda requires external libraries to be included as layers. You&#8217;ll need to create layers for <strong>OpenAI, numpy</strong>, and <strong>pandas</strong></p>



<ul class="wp-block-list">
<li>Package your Python libraries in a ZIP file.</li>



<li>Upload the ZIP file to Lambda Layers.</li>



<li>Attach these layers to your Lambda function.</li>
</ul>



<h2 class="wp-block-heading">Complete Source Code &amp; Video</h2>



<p>Below source code, connects with Salesforce, fetches lead record and uses Open AI to convert data into embedding. It also shows how searched parameter can be compared with matched word using weightage </p>



<script src="https://gist.github.com/JitendraZaa/f04ed4c5cfca6c97b97cf57f38eeeab1.js"></script>



<p>Few Observations</p>



<ul class="wp-block-list">
<li>I did not use SImple_Salesforce python library as it would need to be imported as a layer in lambda</li>



<li>Environment variables can be created by navigating to the Configuration tab in the lambda</li>
</ul>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="AWS Lambda integration with Salesforce" width="500" height="281" src="https://www.youtube.com/embed/zMYI2SiTZ6Y?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p>Below is the screenshot of the outcome</p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="752" height="554" src="https://i0.wp.com/www.jitendrazaa.com/blog/wp-content/uploads/2023/12/AWS-Lambda-Embedding.png?resize=752%2C554&#038;ssl=1" alt="" class="wp-image-11194" srcset="https://i0.wp.com/www.jitendrazaa.com/blog/wp-content/uploads/2023/12/AWS-Lambda-Embedding.png?w=752&amp;ssl=1 752w, https://i0.wp.com/www.jitendrazaa.com/blog/wp-content/uploads/2023/12/AWS-Lambda-Embedding.png?resize=300%2C221&amp;ssl=1 300w" sizes="auto, (max-width: 752px) 100vw, 752px" /></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://www.jitendrazaa.com/blog/salesforce/converting-salesforce-data-into-embeddings-with-openai-and-aws-lambda/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">11191</post-id>	</item>
		<item>
		<title>Salesforce Bulk API 2 using Mulesoft</title>
		<link>https://www.jitendrazaa.com/blog/integration/mulesoft/salesforce-bulk-api-2-using-mulesoft/</link>
					<comments>https://www.jitendrazaa.com/blog/integration/mulesoft/salesforce-bulk-api-2-using-mulesoft/#respond</comments>
		
		<dc:creator><![CDATA[Jitendra]]></dc:creator>
		<pubDate>Mon, 21 Nov 2022 04:07:16 +0000</pubDate>
				<category><![CDATA[Mulesoft]]></category>
		<category><![CDATA[Mulesoft 4]]></category>
		<category><![CDATA[Video Tutorial]]></category>
		<guid isPermaLink="false">https://www.jitendrazaa.com/blog/?p=7741</guid>

					<description><![CDATA[Demo of using Bulk API 2 &#038; Solving most common errors]]></description>
										<content:encoded><![CDATA[
<p><a href="https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/bulk_common_diff_two_versions.htm">Bulk API 2</a> is a new &amp; better way of handling bulk record processing in Salesforce than the previous Bulk API. A few of the advantage of Bulk API 2 is automatic retries of failed records, a governor limit of 24 hours based on the number of records processed instead of batch job count, automatic handling of batch size, etc. More detail of comparison can be found in <a href="https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/bulk_common_limits.htm">Salesforce documentation here</a>. </p>



<p>This article &amp; video is assuming that you know the basics of <a href="https://www.jitendrazaa.com/blog/?s=mulesoft">Mulesoft</a>. Coming back to this post, We would be using Mulesoft to insert contacts using Bulk API 2. One of the caveats of bulk API is that Dataloader still does not support Bulk API 2. It takes a little more time than the data loader in Mulesoft to use Bulk API 2 but it&#8217;s worth it and better compared to some other tools.</p>



<p>In summary, there are 3 steps that need to happen to use Bulk API 2 to insert records</p>



<ol class="wp-block-list">
<li>Create a request in Salesforce by Sending a CSV file</li>



<li>Keep Retrying by checking the status of the job </li>



<li>Retrieve results</li>
</ol>



<p>In Mulesoft, we are using the below components</p>



<ul class="wp-block-list">
<li>HTTP Request to read CSV file. We can also use a file reader instead of an HTTP request</li>



<li>Using Salesforce Component &#8211; <strong>Create Job bulk API v 2</strong> (image Er-2.1)
<ul class="wp-block-list">
<li>Choose Object Type</li>



<li>sObjects needs CSV content and we can use payload as input</li>



<li>Line ending &#8211; CRLF or LF depending on your configuration</li>



<li>Column delimiter &#8211; COMMA</li>
</ul>
</li>



<li>To get the status of the job, we are using component &#8211; <strong>Get job state bulk API v 2</strong></li>



<li>We are using <strong>Until Successful </strong>component in Mulesoft to keep retrying</li>



<li>once we get the status, we use the <strong>Choice</strong> component. We are raising an error if the state is not <strong>JobComplete</strong> or <strong>Failed</strong>. A list of all valid states can be <a href="https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/get_job_info.htm">found here</a></li>
</ul>



<p>Below image shows how each components are connected &amp; sequenced, it would give you good idea on what needs to be done.</p>



<figure class="wp-block-image aligncenter size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="1024" height="339" src="https://i0.wp.com/www.jitendrazaa.com/blog/wp-content/uploads/2022/11/Using-Bulk-API-2-in-Mulesoft.png?resize=1024%2C339&#038;ssl=1" alt="" class="wp-image-7746" srcset="https://i0.wp.com/www.jitendrazaa.com/blog/wp-content/uploads/2022/11/Using-Bulk-API-2-in-Mulesoft.png?resize=1024%2C339&amp;ssl=1 1024w, https://i0.wp.com/www.jitendrazaa.com/blog/wp-content/uploads/2022/11/Using-Bulk-API-2-in-Mulesoft.png?resize=300%2C99&amp;ssl=1 300w, https://i0.wp.com/www.jitendrazaa.com/blog/wp-content/uploads/2022/11/Using-Bulk-API-2-in-Mulesoft.png?resize=768%2C254&amp;ssl=1 768w, https://i0.wp.com/www.jitendrazaa.com/blog/wp-content/uploads/2022/11/Using-Bulk-API-2-in-Mulesoft.png?w=1355&amp;ssl=1 1355w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /><figcaption class="wp-element-caption">Mulesoft flow to use Bulk API 2</figcaption></figure>



<p>To test the below flow, you can use <a href="https://www.postman.com/">postman</a>. Make sure you set the Body type as Binary and choose CSV file. You can <a href="https://www.jitendrazaa.com/blog/wp-content/uploads/2022/11/SampleContact3.csv">use this CSV file as a sample to save time</a>. Make sure to replace AccountId with AccountId in your Org. </p>



<span id="more-7741"></span>



<p>Below is the Configuration XML</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;

&lt;mule xmlns:ee=&quot;http://www.mulesoft.org/schema/mule/ee/core&quot; xmlns:salesforce=&quot;http://www.mulesoft.org/schema/mule/salesforce&quot;
	xmlns:http=&quot;http://www.mulesoft.org/schema/mule/http&quot;
	xmlns=&quot;http://www.mulesoft.org/schema/mule/core&quot; xmlns:doc=&quot;http://www.mulesoft.org/schema/mule/documentation&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation=&quot;http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/salesforce http://www.mulesoft.org/schema/mule/salesforce/current/mule-salesforce.xsd
http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd&quot;&gt;
	&lt;http:listener-config name=&quot;HTTP_Listener_config&quot; doc:name=&quot;HTTP Listener config&quot; doc:id=&quot;b3f7540e-a465-4b2d-ad4d-46fc56cb1637&quot; &gt;
		&lt;http:listener-connection host=&quot;0.0.0.0&quot; port=&quot;8081&quot; /&gt;
	&lt;/http:listener-config&gt;
	&lt;salesforce:sfdc-config name=&quot;Jit29Org&quot; doc:name=&quot;Salesforce Config&quot; doc:id=&quot;6f407f5c-ccfa-4db6-befa-3ced16196c0e&quot; &gt;
		&lt;salesforce:basic-connection username=&quot;youremail@gmail.com&quot; password=&quot;somepwd&quot; /&gt;
	&lt;/salesforce:sfdc-config&gt;
	&lt;flow name=&quot;jit29backupFlow2&quot; doc:id=&quot;fa954752-faf4-4e78-bdd6-c44bf54b398b&quot; &gt;
		&lt;http:listener doc:name=&quot;/bulkInsert&quot; doc:id=&quot;73773cb4-9f69-4700-8518-63cea055b444&quot; config-ref=&quot;HTTP_Listener_config&quot; path=&quot;/bulkInsert&quot;/&gt;
		&lt;salesforce:create-job-bulk-api-v2 doc:name=&quot;Create job bulk api v 2 - Contact&quot; doc:id=&quot;810bb823-d58c-4901-8e5f-9d18ebdc727a&quot; config-ref=&quot;Jit29Org&quot; objectType=&quot;Contact&quot; operation=&quot;insert&quot; lineEnding=&quot;CRLF&quot; doc:description=&#039;output application/java&amp;#10;---&amp;#10;{&amp;#10;	LastName: payload.LastName,&amp;#10;	MobilePhone: payload.MobilePhone,&amp;#10;	Email: payload.Email,&amp;#10;	AccountId:&quot;0011U000014hIcIQAU&quot;&amp;#10;}&#039;&gt;
		&lt;/salesforce:create-job-bulk-api-v2&gt;
		&lt;set-variable value=&quot;#&#x5B;payload.id]&quot; doc:name=&quot;jobId&quot; doc:id=&quot;2cd419b4-286c-44b0-9ba6-b80ca20a7437&quot; variableName=&quot;jobId&quot;/&gt;
		&lt;logger level=&quot;INFO&quot; doc:name=&quot;Logger&quot; doc:id=&quot;ebf27c8a-16e4-4a67-a437-369df8ba01e9&quot; message=&#039;Job status is #&#x5B;vars.jobstate] Before making job status request. Job ID - #&#x5B;vars.jobId]&#039;/&gt;
		&lt;until-successful maxRetries=&quot;3600&quot; doc:name=&quot;Until Successful&quot; doc:id=&quot;76d0ffbb-0ff5-4ef8-acfb-43455c2e5af9&quot; millisBetweenRetries=&quot;5000&quot;&gt;
			&lt;salesforce:get-job-state-bulk-api-v2 doc:name=&quot;Get job state bulk api v 2&quot; doc:id=&quot;b9bff670-b903-4a0b-8258-4d45d428bdb2&quot; config-ref=&quot;Jit29Org&quot; id=&quot;#&#x5B;vars.jobId]&quot; /&gt;
			&lt;set-variable value=&quot;#&#x5B;payload.state]&quot; doc:name=&quot;update jobstate&quot; doc:id=&quot;4fd26c43-00e0-483b-b8c6-44541b5e110f&quot; variableName=&quot;jobstate&quot; /&gt;
			&lt;choice doc:name=&quot;Check Job State&quot; doc:id=&quot;7d2d53d8-503c-4960-b685-cdce6ef81795&quot; &gt;
				&lt;when expression=&#039;#&#x5B;vars.jobstate == &quot;JobComplete&quot;]&#039;&gt;
					&lt;logger level=&quot;INFO&quot; doc:name=&quot;Logger&quot; doc:id=&quot;94810163-b26d-46e2-8f63-2bd75b26b0a6&quot; message=&quot;Records Processed Succesfully in Salesforce&quot; /&gt;
					&lt;salesforce:retrieve-job-failed-results-bulk-v2 doc:name=&quot;Retrieve job failed results bulk v 2&quot; doc:id=&quot;eff1b41a-20ee-46e6-adbf-b9ca22df655d&quot; config-ref=&quot;Jit29Org&quot; id=&quot;#&#x5B;vars.jobId]&quot;/&gt;
				&lt;/when&gt;
				&lt;when expression=&#039;#&#x5B;vars.jobstate == &quot;Failed&quot;]&#039;&gt;
					&lt;logger level=&quot;INFO&quot; doc:name=&quot;Logger&quot; doc:id=&quot;b77237de-545d-46e6-aca1-3c171142f005&quot; message=&quot;Job Failed . #&#x5B;payload.errorMessage]. #&#x5B;payload.state]&quot;/&gt;
					&lt;salesforce:retrieve-job-failed-results-bulk-v2 doc:name=&quot;Retrieve job failed results bulk v 2&quot; doc:id=&quot;5a3cf99b-b1d7-4263-bb5c-5d8bd720dcc2&quot; config-ref=&quot;Jit29Org&quot; id=&quot;#&#x5B;vars.jobId]&quot;/&gt;
				&lt;/when&gt;
				&lt;otherwise &gt;
					&lt;logger level=&quot;INFO&quot; doc:name=&quot;Logger&quot; doc:id=&quot;6c28b5d8-3486-4c03-96e4-678583e45bf2&quot; message=&quot;Going to Raise Exception&quot;/&gt;
					&lt;raise-error doc:name=&quot;Raise error&quot; doc:id=&quot;5abedfd7-eb00-48c9-95b6-12c4a74fb185&quot; type=&quot;SF:JOB_IN_PROGRESS&quot; description=&quot;Bulk API 2 is still in progress&quot;/&gt;
				&lt;/otherwise&gt;
			&lt;/choice&gt;
		&lt;/until-successful&gt;
		&lt;logger level=&quot;INFO&quot; doc:name=&quot;Logger&quot; doc:id=&quot;1d00f918-2c4f-414c-a4c0-3f4ccf6cc687&quot; message=&quot;All Done&quot;/&gt;
		&lt;logger level=&quot;INFO&quot; doc:name=&quot;Logger&quot; doc:id=&quot;f2e7fabe-d25d-4257-9be0-aa2cf2e89c94&quot; message=&quot;#&#x5B;payload]&quot;/&gt;
	&lt;/flow&gt;
&lt;/mule&gt;

</pre></div>


<figure class="wp-block-embed aligncenter is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Salesforce Insert using Bulk API 2 in MuleSoft" width="500" height="281" src="https://www.youtube.com/embed/sqEINlE1_9k?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading">Solving Common errors in Mulesoft while using Bulk API 2</h2>



<h3 class="wp-block-heading">Error : InvalidBatch : Field name not found </h3>



<p>There could be 2 reasons for this error</p>



<ol class="wp-block-list">
<li>CSV file header not matching with Actual field API Name OR</li>



<li>CSV file format is UTF-8. Salesforce does not understand UTF-8 CSV. It would accept plain CSV file</li>
</ol>



<p></p>



<h3 class="wp-block-heading">Error : LineEnding is invalid on user data. Current LineEnding setting is CRLF </h3>



<p>Make sure the end-of-line setting in the MuleSoft property is set properly either to LF or CRLF as shown in image Er-2.1. To see what a line ending in your file is, open it in CSV and check the bottom right corner as shown in image Er-2.2</p>



<figure class="wp-block-image aligncenter size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="661" height="716" src="https://i0.wp.com/www.jitendrazaa.com/blog/wp-content/uploads/2022/11/LineEnding-is-invalid-on-user-data.-Current-LineEnding-setting-is-CRLF-Mulesoft.png?resize=661%2C716&#038;ssl=1" alt="" class="wp-image-7742" srcset="https://i0.wp.com/www.jitendrazaa.com/blog/wp-content/uploads/2022/11/LineEnding-is-invalid-on-user-data.-Current-LineEnding-setting-is-CRLF-Mulesoft.png?w=661&amp;ssl=1 661w, https://i0.wp.com/www.jitendrazaa.com/blog/wp-content/uploads/2022/11/LineEnding-is-invalid-on-user-data.-Current-LineEnding-setting-is-CRLF-Mulesoft.png?resize=277%2C300&amp;ssl=1 277w" sizes="auto, (max-width: 661px) 100vw, 661px" /><figcaption class="wp-element-caption">ER-2.1 Mulesoft Property Editor to set Line Ending for Bulk API 2</figcaption></figure>



<figure class="wp-block-image aligncenter size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="1016" height="756" src="https://i0.wp.com/www.jitendrazaa.com/blog/wp-content/uploads/2022/11/LineEnding-is-invalid-on-user-data.-Current-LineEnding-setting-is-CRLF-VSCode.png?resize=1016%2C756&#038;ssl=1" alt="" class="wp-image-7743" srcset="https://i0.wp.com/www.jitendrazaa.com/blog/wp-content/uploads/2022/11/LineEnding-is-invalid-on-user-data.-Current-LineEnding-setting-is-CRLF-VSCode.png?w=1016&amp;ssl=1 1016w, https://i0.wp.com/www.jitendrazaa.com/blog/wp-content/uploads/2022/11/LineEnding-is-invalid-on-user-data.-Current-LineEnding-setting-is-CRLF-VSCode.png?resize=300%2C223&amp;ssl=1 300w, https://i0.wp.com/www.jitendrazaa.com/blog/wp-content/uploads/2022/11/LineEnding-is-invalid-on-user-data.-Current-LineEnding-setting-is-CRLF-VSCode.png?resize=768%2C571&amp;ssl=1 768w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /><figcaption class="wp-element-caption">ER-2.2 Checking Line ending in VSCode for Bulk API 2.0</figcaption></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://www.jitendrazaa.com/blog/integration/mulesoft/salesforce-bulk-api-2-using-mulesoft/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">7741</post-id>	</item>
		<item>
		<title>Understanding Flow Orchestrator Under 7 Min</title>
		<link>https://www.jitendrazaa.com/blog/salesforce/understanding-flow-orchestrator-under-7-min/</link>
					<comments>https://www.jitendrazaa.com/blog/salesforce/understanding-flow-orchestrator-under-7-min/#comments</comments>
		
		<dc:creator><![CDATA[Jitendra]]></dc:creator>
		<pubDate>Thu, 10 Nov 2022 03:12:03 +0000</pubDate>
				<category><![CDATA[Salesforce]]></category>
		<category><![CDATA[Flow]]></category>
		<category><![CDATA[Salesforce Admin]]></category>
		<category><![CDATA[Video Tutorial]]></category>
		<guid isPermaLink="false">https://www.jitendrazaa.com/blog/?p=7721</guid>

					<description><![CDATA[What is Flow Orchestration and how admin, developers &#038; architects can use it with Video]]></description>
										<content:encoded><![CDATA[
<p><a href="https://help.salesforce.com/s/articleView?id=sf.orchestrator_flow_orchestrator.htm&amp;type=5">Flow Orchestration </a>is another capability Salesforce has recently added under the low code umbrella. I will be quick and to the point in this blog post to help you understand when &amp; how to use it.</p>



<p><strong>Important points to know about Flow Orchestrator</strong></p>



<ul class="wp-block-list">
<li>It supports multi-step, multi-user orchestrator capabilities for Flow</li>



<li>Multiple Flows (Sub flows) can be tied together</li>



<li>Orchestrator basically contains stage, step &amp; decision components</li>



<li>The stage comprises multiple sub-flows and can control the sequence of execution of those flows</li>



<li>Steps are either Screen flow or Auto launch flow</li>



<li>Each Screen flow can be assigned to a user, queue, or public group</li>



<li>Orchestrator can be only launched on record create or update (Record triggered flow)</li>



<li>All sub-flows (steps) can be connected by only the current object which started the flow</li>



<li>Flow Orchestrator component needs to be added on the lighting page so that assignee can see if any action is waiting on them</li>



<li>Another way to see all pending actions assigned to the user is by navigating to the tab <strong>Orchestration Work Items</strong></li>
</ul>



<p>Considerations</p>



<ul class="wp-block-list">
<li>This is not a new tool, it can just control the sequence of sub-flows &amp; take some decisions</li>



<li>Outgoing email content to the user assigned cannot be changed</li>
</ul>



<p>Feel free to add any important points in the comment section which I missed.</p>



<p>If you are a video person, you can watch the below video to see it in action</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Salesforce Flow Orchestrator under 7 minutes" width="500" height="281" src="https://www.youtube.com/embed/JNPICpvoAK8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://www.jitendrazaa.com/blog/salesforce/understanding-flow-orchestrator-under-7-min/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">7721</post-id>	</item>
		<item>
		<title>Scan Barcode in LWC Natively</title>
		<link>https://www.jitendrazaa.com/blog/salesforce/scan-barcode-in-lwc-natively/</link>
					<comments>https://www.jitendrazaa.com/blog/salesforce/scan-barcode-in-lwc-natively/#comments</comments>
		
		<dc:creator><![CDATA[Jitendra]]></dc:creator>
		<pubDate>Mon, 06 Jun 2022 20:01:20 +0000</pubDate>
				<category><![CDATA[Salesforce]]></category>
		<category><![CDATA[Barcode]]></category>
		<category><![CDATA[Lightning Web Component]]></category>
		<category><![CDATA[LWC]]></category>
		<category><![CDATA[Video Tutorial]]></category>
		<guid isPermaLink="false">https://www.jitendrazaa.com/blog/?p=7587</guid>

					<description><![CDATA[Demo &#038; Source code of using Barcode API in Salesforce LWC]]></description>
										<content:encoded><![CDATA[
<p>Around 7 years back I have written <a href="https://www.jitendrazaa.com/blog/salesforce/barcode-decoder-in-salesforce1-very-fast-and-simple/">this post</a> which shows how Barcode scan can be supported in Visualforce and <a href="https://www.jitendrazaa.com/blog/salesforce/barcode-scanner-component-in-salesforce-lightning-video/">in aura component</a> with the help of an external javascript library <a href="https://serratus.github.io/quaggaJS/examples/">quagga</a>.</p>



<p>Salesforce recently released a <a href="https://developer.salesforce.com/docs/component-library/documentation/en/lwc/lwc.reference_lightning_barcodescanner">new Barcode API </a>which now supports barcode scanning natively on LWC for mobile devices.  As it&#8217;s supported natively, we don&#8217;t need to worry about maintaining 3rd party Javascripts, Locker services, performance issues, etc. </p>



<p>At the time of writing this blog post, <a href="https://developer.salesforce.com/docs/component-library/documentation/en/lwc/lwc.reference_lightning_barcodescanner_constants">around 10 different types</a> of barcodes are supported. </p>



<span id="more-7587"></span>



<p>Below source code demonstrate how simple it is to use in LWC. </p>



<ul class="wp-block-list"><li>import <em>lightning/mobileCapabilities </em></li><li>initiate scanner variable using method <em>getBarcodeScanner()</em></li><li>set <em>configuration</em> suggesting which barcodes are supported</li><li>use <em>begineCapture() </em>method top launch mobile camera</li><li>read the result or handle error</li></ul>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Using Native Barcode API in LWC - Salesforce" width="500" height="281" src="https://www.youtube.com/embed/Su-qV10uVuw?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<script src="https://gist.github.com/JitendraZaa/577d1061637bdef7c9f7d70e99893166.js"></script>



<p><strong>Resources :</strong></p>



<ul class="wp-block-list"><li><a href="https://developer.salesforce.com/docs/component-library/documentation/en/lwc/lwc.reference_lightning_barcodescanner_constants">Supported QR Code Types</a></li><li><a href="https://qr.io/?gclid=CjwKCAjw7IeUBhBbEiwADhiEMb2QVyMnnYJffsI1Ym6uVxiC4z5AarAtW2FYpx4xBLhKC1Yjh57iwBoCirMQAvD_BwE">QR Code Generator</a></li><li><a href="https://poscatch.com/barcode-generator/">Barcode Generator</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.jitendrazaa.com/blog/salesforce/scan-barcode-in-lwc-natively/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">7587</post-id>	</item>
		<item>
		<title>Choosing Between Relationships, Standard &#038; Custom Objects &#8211; Video &#038; Presentation</title>
		<link>https://www.jitendrazaa.com/blog/salesforce/choosing-between-relationships-standard-custom-objects-video-presentation/</link>
					<comments>https://www.jitendrazaa.com/blog/salesforce/choosing-between-relationships-standard-custom-objects-video-presentation/#comments</comments>
		
		<dc:creator><![CDATA[Jitendra]]></dc:creator>
		<pubDate>Fri, 17 Dec 2021 22:33:00 +0000</pubDate>
				<category><![CDATA[Salesforce]]></category>
		<category><![CDATA[CTA]]></category>
		<category><![CDATA[Video Tutorial]]></category>
		<guid isPermaLink="false">https://www.jitendrazaa.com/blog/?p=7559</guid>

					<description><![CDATA[Few of the most common areas where Salesforce professionals or CTA candidates struggle are Deciding on when to use Standard vs Custom Object When to use Lookup vs Master Detail Relationship In the below talk, I went through the above questions and shared my decision process on how I decide which objects &#38; relationships to [&#8230;]]]></description>
										<content:encoded><![CDATA[
<div  style="display:block, width:100% " >  <iframe loading="lazy" style="display:block" src="https://docs.google.com/presentation/d/e/2PACX-1vSAjvRl0owCeCMWwo_qCOoIMfsaFssdoR73mNlHkVeZaMrmu4zY-O6nWU30yUqTGg/embed?start=false&amp;loop=false&amp;delayms=10000" frameborder="0" width="960" height="569" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true"></iframe> 
</div>



<p class="justify">Few of the most common areas where Salesforce professionals or CTA candidates struggle are</p>



<ul class="wp-block-list"><li>Deciding on when to use Standard vs Custom Object</li><li>When to use Lookup vs Master Detail Relationship</li></ul>



<span id="more-7559"></span>



<p class="justify">In the below talk, I went through the above questions and shared my decision process on how I decide which objects &amp; relationships to use when. </p>



<p class="justify">Hope this talk would help all of you and is worth your time watching this video. </p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Choosing between Standard &amp; Custom Objects, Relationships in CTA exam" width="500" height="281" src="https://www.youtube.com/embed/kyymcxmbeGI?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p class="justify">Feel free to drop a comment below and share your decision guidance for a similar topic for readers. </p>



<p> </p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.jitendrazaa.com/blog/salesforce/choosing-between-relationships-standard-custom-objects-video-presentation/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">7559</post-id>	</item>
		<item>
		<title>Enable SMS In Salesforce Using Digital Engagement</title>
		<link>https://www.jitendrazaa.com/blog/salesforce/send-sms-from-salesforce-using-digital-engagement/</link>
					<comments>https://www.jitendrazaa.com/blog/salesforce/send-sms-from-salesforce-using-digital-engagement/#comments</comments>
		
		<dc:creator><![CDATA[Jitendra]]></dc:creator>
		<pubDate>Sun, 29 Aug 2021 03:59:40 +0000</pubDate>
				<category><![CDATA[Salesforce]]></category>
		<category><![CDATA[DE]]></category>
		<category><![CDATA[Digital Engagement]]></category>
		<category><![CDATA[Digital SKU]]></category>
		<category><![CDATA[Live Message]]></category>
		<category><![CDATA[Omni Channel]]></category>
		<category><![CDATA[Service Cloud]]></category>
		<category><![CDATA[SFDC]]></category>
		<category><![CDATA[Video Tutorial]]></category>
		<guid isPermaLink="false">https://www.jitendrazaa.com/blog/?p=7276</guid>

					<description><![CDATA[Improve customer support service by adding SMS channel in Service Cloud using Digital Engagement]]></description>
										<content:encoded><![CDATA[
<p class="justify">Amazon, Apple, Google, etc all trillion-dollar companies, what do they have in common? Their obsession for customer service &amp; keeping customers at the center of your business.</p>



<p class="justify">It&#8217;s not only about trillion-dollar companies, but also medium and small businesses, if they want to succeed in this comparative market, they need to make sure customer service is at the heart of their business. </p>



<p class="justify">If I ask you a question, which technology gadget you cannot live with ? That&#8217;s your mobile phone and it is pretty much possible that you are reading this blog post right now on your mobile device. </p>



<p class="justify">So, if you are a customer and you have some issue, what are some of the options that you would like to use to contact companies? Phone calls are great but the problem is its real-time communication and you need to be on call with a customer representative and cannot do multi-tasking. </p>



<p class="justify">The email could be another option, but spammers, marketers they have flooded our email box and to be honest, I hate opening my emails, there are tons of unread email every day.</p>



<p class="justify">So, what point I&#8217;m trying to make here? I&#8217;m indirectly talking about channels and ways customers can try to connect to the company if they face issues. Phone &amp; emails are out because of some reasons mentioned above. The few options which are left are Social media, Live chat, or SMS. Customers can do multi-tasking while using all these channels. They don&#8217;t need to be on call for 30 mins or 1 hour to get issues resolved. </p>



<p class="justify">That brings us to our blog post title, how can we use SMS in Salesforce to enable customers to reach out via text message? Today, we have lots of options like <a href="https://appexchange.salesforce.com/appxSearchKeywordResults?keywords=SMS">AppExchange products</a>, Live Message and then there is the new kid on the ground &#8211; <strong>Digital Engagement</strong>.  </p>



<p class="justify"><strong>Live Message</strong> product in Salesforce was part of <a href="https://www.businessinsider.com/salesforce-buys-heywire-2016-9">heywire acquisition in 2016</a>. However, like most Salesforce products, <a href="https://help.salesforce.com/s/articleView?id=000351084&amp;type=1">Live Message is scheduled to be retired </a>in an effort to give a single omni channel experience to customer reps for all digital channels, which in my opinion is a welcome move.</p>



<p class="justify">Enough of background, let&#8217;s dive into how do we set up SMS in digital experience. </p>



<span id="more-7276"></span>



<p class="justify">If you are video person, go ahead skip this post and watch below video.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="How to setup SMS in Digital Engagement Salesforce Service Cloud" width="500" height="281" src="https://www.youtube.com/embed/6ISsuuVV_EI?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div><figcaption>How to setup SMS in Digital Engagement &#8211; Salesforce Service Cloud</figcaption></figure>



<p class="justify">First step is to navigate to Setup | Feature Settings | Service | Messaging Settings and enable <strong>Messaging</strong>.</p>



<p>Now, click on <strong>New Channel</strong> and select <strong>SMS Text Messaging</strong>. </p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="631" height="569" src="https://i0.wp.com/www.jitendrazaa.com/blog/wp-content/uploads/2021/08/Salesforce-Digital-Engagement-Select-SMS-Channel.png?resize=631%2C569&#038;ssl=1" alt="" class="wp-image-7281" srcset="https://i0.wp.com/www.jitendrazaa.com/blog/wp-content/uploads/2021/08/Salesforce-Digital-Engagement-Select-SMS-Channel.png?w=631&amp;ssl=1 631w, https://i0.wp.com/www.jitendrazaa.com/blog/wp-content/uploads/2021/08/Salesforce-Digital-Engagement-Select-SMS-Channel.png?resize=300%2C271&amp;ssl=1 300w" sizes="auto, (max-width: 631px) 100vw, 631px" /><figcaption>Select new Channel in Digital Experience</figcaption></figure>



<p class="justify">Depending on which country you are setting up SMS, you may need Letter of Authorization (LOA) or not. <a href="https://www.salesforce.com/content/dam/web/en_us/www/assets/pdf/misc/livemessage-set-up-instructions.pdf">Refer this link to know more about what is LOA and what information needed by Salesforce to add phone number</a>. </p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="633" height="698" src="https://i0.wp.com/www.jitendrazaa.com/blog/wp-content/uploads/2021/08/Salesforce-Digital-Engagement-LOA-for-SMS.png?resize=633%2C698&#038;ssl=1" alt="" class="wp-image-7282" srcset="https://i0.wp.com/www.jitendrazaa.com/blog/wp-content/uploads/2021/08/Salesforce-Digital-Engagement-LOA-for-SMS.png?w=633&amp;ssl=1 633w, https://i0.wp.com/www.jitendrazaa.com/blog/wp-content/uploads/2021/08/Salesforce-Digital-Engagement-LOA-for-SMS.png?resize=272%2C300&amp;ssl=1 272w" sizes="auto, (max-width: 633px) 100vw, 633px" /><figcaption>Upload LOA to enable phone number for SMS</figcaption></figure>



<p class="justify">Once case is created, Salesforce would take some time to add phone number and activate it for use.</p>



<p class="justify">Next step is just like any other service channel, add contact center users in Queue and assign presence status to their profile or permission set. </p>



<p>Once all setup is done, open Sales or Service console, change presence status of Omni channel to be available for messaging and start providing world class service to your customer.</p>



<p>If this blog post helped you, feel free to let me know your thoughts in comments.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.jitendrazaa.com/blog/salesforce/send-sms-from-salesforce-using-digital-engagement/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">7276</post-id>	</item>
		<item>
		<title>Salesforce Integration with Nodejs based applications using Canvas</title>
		<link>https://www.jitendrazaa.com/blog/salesforce/salesforce-integration-with-nodejs-based-applications-using-canvas/</link>
					<comments>https://www.jitendrazaa.com/blog/salesforce/salesforce-integration-with-nodejs-based-applications-using-canvas/#comments</comments>
		
		<dc:creator><![CDATA[Jitendra]]></dc:creator>
		<pubDate>Mon, 20 Jul 2020 06:29:06 +0000</pubDate>
				<category><![CDATA[Integration]]></category>
		<category><![CDATA[Node.js]]></category>
		<category><![CDATA[Salesforce]]></category>
		<category><![CDATA[Canvas]]></category>
		<category><![CDATA[Integration Patterns]]></category>
		<category><![CDATA[NodeJs]]></category>
		<category><![CDATA[Video Tutorial]]></category>
		<guid isPermaLink="false">https://www.jitendrazaa.com/blog/?p=7147</guid>

					<description><![CDATA[How to use Canvas Signed Request Authentication with web based applications like Nodejs &#038; how to use Canvas LifeCycle Handler Class]]></description>
										<content:encoded><![CDATA[
<p class="justify">Salesforce provides many ways to integrate with external systems like SOAP, Rest, Bulk API, User Interface API and so on. One of useful way to integrate any existing web applications with Salesforce is using Canvas.</p>



<p class="justify">For sake of this post, I&#8217;m using Nodejs application and complete source code can be found <a href="https://github.com/JitendraZaa/CanvasDemo">here</a> , on my <a href="https://github.com/JitendraZaa/CanvasDemo">Github repository</a>. It can be deployed on Heroku easily, however I used my local computer to run canvas. That also proves point that integration is happening via Browser and therefore canvas application can be hosted on premise and <a href="https://en.wikipedia.org/wiki/DMZ_(computing)">not necessarily on DMZ layer</a>.</p>



<h3 class="wp-block-heading">Step 1 : Create Connected App in Salesforce</h3>



<p class="justify">Enable OAuth in Connected app and provide any Callback URL. Canvas app does not use callback URL however we DO NEED scope. </p>



<p class="justify">Next step would be enabling canvas app itself connected app along with locations where we would be using it. </p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="1024" height="753" src="https://i0.wp.com/www.jitendrazaa.com/blog/wp-content/uploads/2020/07/Salesforce-Canvas-App-in-Nodejs.png?resize=1024%2C753&#038;ssl=1" alt="" class="wp-image-7149" srcset="https://i0.wp.com/www.jitendrazaa.com/blog/wp-content/uploads/2020/07/Salesforce-Canvas-App-in-Nodejs.png?resize=1024%2C753&amp;ssl=1 1024w, https://i0.wp.com/www.jitendrazaa.com/blog/wp-content/uploads/2020/07/Salesforce-Canvas-App-in-Nodejs.png?resize=300%2C221&amp;ssl=1 300w, https://i0.wp.com/www.jitendrazaa.com/blog/wp-content/uploads/2020/07/Salesforce-Canvas-App-in-Nodejs.png?resize=768%2C565&amp;ssl=1 768w, https://i0.wp.com/www.jitendrazaa.com/blog/wp-content/uploads/2020/07/Salesforce-Canvas-App-in-Nodejs.png?resize=1536%2C1130&amp;ssl=1 1536w, https://i0.wp.com/www.jitendrazaa.com/blog/wp-content/uploads/2020/07/Salesforce-Canvas-App-in-Nodejs.png?resize=1200%2C882&amp;ssl=1 1200w, https://i0.wp.com/www.jitendrazaa.com/blog/wp-content/uploads/2020/07/Salesforce-Canvas-App-in-Nodejs.png?w=1678&amp;ssl=1 1678w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /></figure>



<span id="more-7147"></span>



<h3 class="wp-block-heading">Step 2 : Wrap Canvas Connected App in Visualforce</h3>



<p class="justify">In this post, we will host canavs app in Visualforce page and then add Visualforce page on Account page. LWC still odes not support Canvas app and I&#8217;m not huge fan of Aura , so VF fits the bill for quick demo.</p>



<p>Visualforce Source Code</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: xml; title: ; notranslate">
&lt;apex:page standardController=&quot;Account&quot;&gt;
    &lt;apex:canvasApp applicationName=&quot;Localhost_Connected_App&quot; 
        height=&quot;2000px&quot; width=&quot;750px&quot;/&gt;
&lt;/apex:page&gt;
</pre></div>


<p class="justify">For more advance control &amp; granular capability, we can inject Lifecycle class in Canvas app, full documentation can be found in <a href="https://developer.salesforce.com/docs/atlas.en-us.platform_connect.meta/platform_connect/canvas_creating_a_new_canvaslifecyclehandler.htm">canvas developer guide here</a>. Below source code I&#8217;ve used in video demo</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: jscript; title: ; notranslate">
/**
 * Sample Apex class to show case Canvas Life Cycle class demo
 */
public with sharing class CanvasDemoAppLifeCycle 
    implements Canvas.CanvasLifecycleHandler {

        public Set&lt;Canvas.ContextTypeEnum&gt; excludeContextTypes(){
            Set&lt;Canvas.ContextTypeEnum&gt; excluded = new Set&lt;Canvas.ContextTypeEnum&gt;();
    
            // Code goes here to add items to excluded list
            // that should be excluded from Context data
    
            return excluded;
        }
    
        public void onRender(Canvas.RenderContext renderContext) {   
            // Get the Application and Environment context from the RenderContext
            Canvas.ApplicationContext app = renderContext.getApplicationContext();
            Canvas.EnvironmentContext env = renderContext.getEnvironmentContext();

            if (false){ 
                throw new Canvas.CanvasRenderException(&#039;This is sample error message&#039;);
            } 

            Set&lt;String&gt; fields = new Set&lt;String&gt;{&#039;*&#039;,&#039;Name&#039;};
            //env.addEntityFields(fields);  
        }
    }
</pre></div>


<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Salesforce Integration using Canvas for Nodejs based applications" width="500" height="281" src="https://www.youtube.com/embed/FhMzTt8IShw?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://www.jitendrazaa.com/blog/salesforce/salesforce-integration-with-nodejs-based-applications-using-canvas/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">7147</post-id>	</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Page Caching using Disk: Enhanced 
Minified using Disk

Served from: www.jitendrazaa.com @ 2026-06-01 12:48:33 by W3 Total Cache
-->