{"id":5885,"date":"2017-01-27T18:53:37","date_gmt":"2017-01-27T18:53:37","guid":{"rendered":"http:\/\/www.jitendrazaa.com\/blog\/?p=5885"},"modified":"2017-03-09T16:59:32","modified_gmt":"2017-03-09T16:59:32","slug":"salesforce-spring-17-release-my-favorite-features","status":"publish","type":"post","link":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/salesforce-spring-17-release-my-favorite-features\/","title":{"rendered":"Salesforce Spring 17 release &#8211; My favorite features"},"content":{"rendered":"<p style=\"text-align: justify;\">In this post, I would be only talking\u00a0about Generally available (GA) features, excluding pilots and Beta. Saving those awesome features for suitable time to come. So, here\u00a0are some of my favorite picks from <strong>Spring 17<\/strong>.<\/p>\n<h3><strong>Composite Resource<\/strong><\/h3>\n<p style=\"text-align: justify;\">Imagine we are doing REST API call from external system by creating Account first and then contact. In between if internet connection is gone or user closes browser and only Account created without contact ? \u00a0From Spring 17, we can reduce number of REST API calls made by combining them in single request. Advantage of this feature would be easier transaction management and API limit saving.\u00a0You can have up to 25 subrequests in a single call. Up to 10 of these subrequests can be query operations, including Query, QueryAll,\u00a0and &#8220;Query More&#8221; requests to obtain the next batch of query results.<!--more--><\/p>\n<h3>reCAPTCHA on Web-to-Lead and Web-to-Case<\/h3>\n<p style=\"text-align: justify;\">If you are using Web-to-Lead or Web-to-Case for your Salesforce instance, you may\u00a0already know the spamming problem. From this release, we can add reCAPTCHA in web forms which will reduce spamming problem drastically.<\/p>\n<figure id=\"attachment_5890\" aria-describedby=\"caption-attachment-5890\" style=\"width: 600px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Salesforce-Web-to-Lead-Web-to-Case-reCaptcha.gif?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-5890\" src=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Salesforce-Web-to-Lead-Web-to-Case-reCaptcha.gif?resize=600%2C150&#038;ssl=1\" alt=\"Salesforce Web-to-Lead Web-to-Case reCaptcha\" width=\"600\" height=\"150\" \/><\/a><figcaption id=\"caption-attachment-5890\" class=\"wp-caption-text\">Salesforce Web-to-Lead &amp; Web-to-Case reCaptcha<\/figcaption><\/figure>\n<p style=\"text-align: justify;\">In my opinion, even this is not full proof solution. If spammer knows your Org Id, they can easily copy paste Web-to-Lead or Web-to-Case code without reCAPTCHA and start over again. However, I will say, something is better than nothing.<\/p>\n<h3>Bookmark your favorite pages<\/h3>\n<p style=\"text-align: justify;\">Your Salesforce user navigates same pages over and over and everytime they use minimum 4-5 clicks ? Its time to save the click using favorite feature for Lightning user interface. We can bookmark any page in Salesforce and then navigate quickly by using favorite icon available at top right corner as shown in below image<\/p>\n<figure id=\"attachment_5892\" aria-describedby=\"caption-attachment-5892\" style=\"width: 523px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Salesforce-bookmark-favorite-URL.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-5892\" src=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Salesforce-bookmark-favorite-URL.png?resize=523%2C232&#038;ssl=1\" alt=\"Salesforce bookmark favorite URL\" width=\"523\" height=\"232\" srcset=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Salesforce-bookmark-favorite-URL.png?w=523&amp;ssl=1 523w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Salesforce-bookmark-favorite-URL.png?resize=300%2C133&amp;ssl=1 300w\" sizes=\"auto, (max-width: 523px) 100vw, 523px\" \/><\/a><figcaption id=\"caption-attachment-5892\" class=\"wp-caption-text\">Salesforce bookmark favorite URL<\/figcaption><\/figure>\n<h3>Limit global search to specific Object<\/h3>\n<p style=\"text-align: justify;\">In Global search, now we can limit our search to specific object only, saving clicks and improving speed.<\/p>\n<figure id=\"attachment_5893\" aria-describedby=\"caption-attachment-5893\" style=\"width: 445px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Step-1-Select-Object-to-be-searched-in-Global-search.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-5893\" src=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Step-1-Select-Object-to-be-searched-in-Global-search.png?resize=445%2C198&#038;ssl=1\" alt=\"Step 1- Select Object to be searched in Global search\" width=\"445\" height=\"198\" srcset=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Step-1-Select-Object-to-be-searched-in-Global-search.png?w=445&amp;ssl=1 445w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Step-1-Select-Object-to-be-searched-in-Global-search.png?resize=300%2C133&amp;ssl=1 300w\" sizes=\"auto, (max-width: 445px) 100vw, 445px\" \/><\/a><figcaption id=\"caption-attachment-5893\" class=\"wp-caption-text\">Step 1- Select Object to be searched in Global search<\/figcaption><\/figure>\n<figure id=\"attachment_5894\" aria-describedby=\"caption-attachment-5894\" style=\"width: 510px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Step-2-Global-Search-in-selected-object.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-5894\" src=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Step-2-Global-Search-in-selected-object.png?resize=510%2C327&#038;ssl=1\" alt=\"Step 2- Global Search in selected object\" width=\"510\" height=\"327\" srcset=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Step-2-Global-Search-in-selected-object.png?w=510&amp;ssl=1 510w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Step-2-Global-Search-in-selected-object.png?resize=300%2C192&amp;ssl=1 300w\" sizes=\"auto, (max-width: 510px) 100vw, 510px\" \/><\/a><figcaption id=\"caption-attachment-5894\" class=\"wp-caption-text\">Step 2- Global Search in selected object<\/figcaption><\/figure>\n<h3>Filter Reports via URL Parameters<\/h3>\n<p>Like Salesforce classic, we can create a report URL to dynamically filter on report. We can use\u00a0<strong>fv0 , fv1 &#8230;<\/strong>\u00a0etc in URL to specify filter. fv0 represents first condition, fv1 second and so on.<strong>\u00a0<\/strong><\/p>\n<p>Example :<\/p>\n<pre>https:\/\/pre-releaseinstance-dev-ed.lightning.force.com\/one\/one.app#\/sObject\/00OB0000001rOUjMAM\/view?t=1485139902948&amp;<strong>fv0=uni\r\n<\/strong><\/pre>\n<figure id=\"attachment_5896\" aria-describedby=\"caption-attachment-5896\" style=\"width: 721px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Salesforce-Lightning-Report-Filter-Spring-17.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-5896\" src=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Salesforce-Lightning-Report-Filter-Spring-17.png?resize=721%2C359&#038;ssl=1\" alt=\"Salesforce Lightning Report Filter - Spring 17\" width=\"721\" height=\"359\" srcset=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Salesforce-Lightning-Report-Filter-Spring-17.png?w=721&amp;ssl=1 721w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Salesforce-Lightning-Report-Filter-Spring-17.png?resize=300%2C149&amp;ssl=1 300w\" sizes=\"auto, (max-width: 721px) 100vw, 721px\" \/><\/a><figcaption id=\"caption-attachment-5896\" class=\"wp-caption-text\">Salesforce Lightning Report Filter &#8211; Spring 17<\/figcaption><\/figure>\n<h3>Run Flow with Lightning Skin<\/h3>\n<p>If you are a visual flow user, there are two good news for you. First, Visual flow now displayed in Lightning skin from Spring 17. However, you would need to enable it first using below steps<\/p>\n<ul>\n<li>From Setup, go to Process Automation Settings<\/li>\n<li>Select\u00a0Enable <strong>Lightning Runtime for Flows<\/strong><\/li>\n<\/ul>\n<h3>Two Column Layout in Flow<\/h3>\n<p style=\"text-align: justify;\">Do you remember <a href=\"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/creating-two-column-layout-in-flow\/\">my post regarding creating two column layouts in flow<\/a> ? I know, I know, that you didn&#8217;t liked that JavaScript approach to convert flow into two column layout. And honestly, even I was not happy with the solution however that\u00a0<strong>was\u00a0<\/strong>the only way known to me but not <strong>now<\/strong>.<\/p>\n<p style=\"text-align: justify;\">Well, its new year and gift from Salesforce \ud83d\ude42 . Forget about my annoying <a href=\"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/creating-two-column-layout-in-flow\/\">post<\/a> and Javascript I shared with you to convert flow into two column. Salesforce supports two column layout by default from Spring 17. All you have to do is enable <strong>L<\/strong><strong>ightning Runtime in Flows<\/strong>\u00a0and while invoking flow, pass below parameter in URL<\/p>\n<pre>\/flow\/flowName?<strong>flowLayout=twoColumn<\/strong><\/pre>\n<p>and your flow will look like<\/p>\n<figure id=\"attachment_5897\" aria-describedby=\"caption-attachment-5897\" style=\"width: 488px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Salesforce-Flow-Two-Column-Layout-Spring-17.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-5897\" src=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Salesforce-Flow-Two-Column-Layout-Spring-17.png?resize=488%2C375&#038;ssl=1\" alt=\"Salesforce Flow Two Column Layout - Spring 17\" width=\"488\" height=\"375\" srcset=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Salesforce-Flow-Two-Column-Layout-Spring-17.png?w=488&amp;ssl=1 488w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Salesforce-Flow-Two-Column-Layout-Spring-17.png?resize=300%2C231&amp;ssl=1 300w\" sizes=\"auto, (max-width: 488px) 100vw, 488px\" \/><\/a><figcaption id=\"caption-attachment-5897\" class=\"wp-caption-text\">Salesforce Flow Two Column Layout &#8211; Spring 17<\/figcaption><\/figure>\n<h3>Omni Channel Supervisor (Classic Only)<\/h3>\n<p style=\"text-align: justify;\">If your Salesforce instance using <a href=\"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/guide-to-setup-omni-channel-in-salesforce-with-video\/\">Omni channel<\/a> then this feature would be your favorite topping over the delicious pizza. Using <a href=\"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/guide-to-setup-omni-channel-in-salesforce-with-video\/\">Omni Channel <\/a>Supervisor, manager of CSR&#8217;s can now check the health of their call center using Agents, Queues and Work tabs. Below image shows, how it looks :<\/p>\n<figure id=\"attachment_5900\" aria-describedby=\"caption-attachment-5900\" style=\"width: 960px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Omni-Channel-Supervisor-Agent-Summary.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-5900\" src=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Omni-Channel-Supervisor-Agent-Summary.png?resize=960%2C373&#038;ssl=1\" alt=\"Omni Channel Supervisor Agent Summary\" width=\"960\" height=\"373\" srcset=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Omni-Channel-Supervisor-Agent-Summary.png?w=960&amp;ssl=1 960w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Omni-Channel-Supervisor-Agent-Summary.png?resize=300%2C117&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Omni-Channel-Supervisor-Agent-Summary.png?resize=768%2C298&amp;ssl=1 768w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><\/a><figcaption id=\"caption-attachment-5900\" class=\"wp-caption-text\">Omni Channel Supervisor Agent Summary<\/figcaption><\/figure>\n<figure id=\"attachment_5902\" aria-describedby=\"caption-attachment-5902\" style=\"width: 960px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Omni-Channel-Supervisor-Agent-Detail.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-5902\" src=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Omni-Channel-Supervisor-Agent-Detail.png?resize=960%2C552&#038;ssl=1\" alt=\"Omni Channel Supervisor Agent Detail\" width=\"960\" height=\"552\" srcset=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Omni-Channel-Supervisor-Agent-Detail.png?w=960&amp;ssl=1 960w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Omni-Channel-Supervisor-Agent-Detail.png?resize=300%2C173&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Omni-Channel-Supervisor-Agent-Detail.png?resize=768%2C442&amp;ssl=1 768w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><\/a><figcaption id=\"caption-attachment-5902\" class=\"wp-caption-text\">Omni Channel Supervisor Agent Detail<\/figcaption><\/figure>\n<h3>Content Security Policy (CSP) Trusted Sites<\/h3>\n<p style=\"text-align: justify;\">Sure you remember remote site settings used by Visualforce pages, which allows it to access third party resources like JavaScript, CSS etc. Questions is, how do we do for Lightning Component ?<\/p>\n<p style=\"text-align: justify;\">The Lightning Component framework uses Content Security Policy (CSP) to control the source of content that can be loaded on a page. To use third-party APIs that make requests to an external (non-Salesforce) server, add the server as a CSP Trusted Site.<\/p>\n<h3 style=\"text-align: justify;\"><strong>One way data binding for Lightning Components<\/strong><\/h3>\n<p style=\"text-align: justify;\">In Lightning Component, we use <strong>{!expression}<\/strong> notation to bind values to components. However, this notation indicates bidirectional binding.\u00a0Aura framework handles its life cycle and update Html DOM tree whenever value changes. As you understand, this render cycle could be heavier causing performance issue in application. If you only need to display\u00a0value and don&#8217;t bother Aura framework to watch and render\u00a0it, how do we do it ? From Spring 17, start using <strong>{#expression}<\/strong> notation for unbound expressions. It will improve performance of Lightning Component.<\/p>\n<h3 style=\"text-align: justify;\">Performance warning in Console<\/h3>\n<p style=\"text-align: justify;\">To improve performance of Lightning component and make sure we follow best practices, <a href=\"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/lightning-component-code-review-using-cli-video\/\">Lightning CLI<\/a> does fantabulous job. Taking one step further,\u00a0Lightning component will display possible performance anti-pattern in browsers console as well from this release. Note : This would appear only if debug mode is enabled.<\/p>\n<h3 style=\"text-align: justify;\">Share Lightning App with non-authenticated Users<\/h3>\n<p style=\"text-align: justify;\">Add the <strong>ltng:allowGuestAccess<\/strong> interface to your Lightning Out dependency app to make it available to users without requiring them to authenticate with Salesforce. This interface lets you build your app with Lightning components, and deploy it anywhere and to anyone.\u00a0A Lightning Out dependency app with the <strong>ltng:allowGuestAccess<\/strong> interface can be used with Lightning Components for Visualforce and with Lightning Out.<\/p>\n<p>Example :<\/p>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\n&lt;aura:application access=&quot;Global&quot; extends=&quot;ltng:outApp&quot; implemenets=&quot;ltng:allowGuestAccess&quot;&gt;\r\n &lt;aura:dependency resource=&quot;c:componentName&quot; \/&gt;\r\n&lt;\/aura:application&gt;\r\n<\/pre>\n<h3>Developer friendly error message for Lightning Components<\/h3>\n<p style=\"text-align: justify;\">Did you ever searched needle in hay stack ? You may have, if you encountered error during lightning component development and don&#8217;t have any idea about\u00a0which resource bundle is responsible for that. Check your self how error looks like<\/p>\n<figure id=\"attachment_5903\" aria-describedby=\"caption-attachment-5903\" style=\"width: 425px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Salesforce-Lightning-Component-error-Message-before-Spring-17.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-5903\" src=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Salesforce-Lightning-Component-error-Message-before-Spring-17.png?resize=425%2C486&#038;ssl=1\" alt=\"Salesforce Lightning Component error Message before Spring 17\" width=\"425\" height=\"486\" srcset=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Salesforce-Lightning-Component-error-Message-before-Spring-17.png?w=425&amp;ssl=1 425w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Salesforce-Lightning-Component-error-Message-before-Spring-17.png?resize=262%2C300&amp;ssl=1 262w\" sizes=\"auto, (max-width: 425px) 100vw, 425px\" \/><\/a><figcaption id=\"caption-attachment-5903\" class=\"wp-caption-text\">Salesforce Lightning Component error Message before Spring 17<\/figcaption><\/figure>\n<p>Now, check below error message in Spring 17. That&#8217;s right, I know its party time<\/p>\n<figure id=\"attachment_5904\" aria-describedby=\"caption-attachment-5904\" style=\"width: 415px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Salesforce-Lightning-Component-error-Message-After-Spring-17.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-5904\" src=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Salesforce-Lightning-Component-error-Message-After-Spring-17.png?resize=415%2C443&#038;ssl=1\" alt=\"Salesforce Lightning Component error Message After Spring 17\" width=\"415\" height=\"443\" srcset=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Salesforce-Lightning-Component-error-Message-After-Spring-17.png?w=415&amp;ssl=1 415w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Salesforce-Lightning-Component-error-Message-After-Spring-17.png?resize=281%2C300&amp;ssl=1 281w\" sizes=\"auto, (max-width: 415px) 100vw, 415px\" \/><\/a><figcaption id=\"caption-attachment-5904\" class=\"wp-caption-text\">Salesforce Lightning Component error Message After Spring 17<\/figcaption><\/figure>\n<h3>Monitor the Status of Apex Batch Jobs<\/h3>\n<p style=\"text-align: justify;\">Get more information about the status of Apex batch jobs. For a particular batch class, you can get information about parent jobs, such as submitted and completion dates and the number of batches processed or failed. This change applies to both Lightning Experience and Salesforce Classic.<\/p>\n<figure id=\"attachment_5905\" aria-describedby=\"caption-attachment-5905\" style=\"width: 851px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Salesforce-Apex-Batch-job-Spring-17.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-5905\" src=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Salesforce-Apex-Batch-job-Spring-17.png?resize=851%2C220&#038;ssl=1\" alt=\"Salesforce Apex Batch job - Spring 17\" width=\"851\" height=\"220\" srcset=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Salesforce-Apex-Batch-job-Spring-17.png?w=851&amp;ssl=1 851w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Salesforce-Apex-Batch-job-Spring-17.png?resize=300%2C78&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Salesforce-Apex-Batch-job-Spring-17.png?resize=768%2C199&amp;ssl=1 768w\" sizes=\"auto, (max-width: 851px) 100vw, 851px\" \/><\/a><figcaption id=\"caption-attachment-5905\" class=\"wp-caption-text\">Salesforce Apex Batch job &#8211; Spring 17<\/figcaption><\/figure>\n<p>Below are some other important changes in Apex classes<\/p>\n<ol>\n<li>Only One Test Setup Method per Class is Allowed<\/li>\n<li>Make Web Service Callouts from Chained Queueable Jobs<\/li>\n<\/ol>\n<p>Below is slideshare file of same topic presented in\u00a0<strong><a href=\"https:\/\/www.meetup.com\/Connecticut-Salesforce-Developer-User-Group\/\">Connecticut Salesforce Developer Group<\/a>\u00a0<\/strong>in Jan 2017.<\/p>\n<p><iframe loading=\"lazy\" style=\"border: 1px solid #CCC; border-width: 1px; margin-bottom: 5px; max-width: 100%;\" src=\"\/\/www.slideshare.net\/slideshow\/embed_code\/key\/OS2jdN5oODE3D\" width=\"595\" height=\"485\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\"> <\/iframe><\/p>\n<div style=\"margin-bottom: 5px;\"><strong> <a title=\"Connecticut Salesforce Developer Group - Jan 2017\" href=\"\/\/www.slideshare.net\/jitendrazaa\/connecticut-salesforce-developer-group-jan-2017\" target=\"_blank\">Connecticut Salesforce Developer Group &#8211; Jan 2017<\/a> <\/strong> from <strong><a href=\"\/\/www.slideshare.net\/jitendrazaa\" target=\"_blank\">Jitendra Zaa \u2601<\/a><\/strong><\/div>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>List of my favorite features in Salesforce Spring 17<\/p>\n","protected":false},"author":1,"featured_media":5889,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"jz_research_post":"","_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[9],"tags":[352,367,167,331,376],"class_list":["post-5885","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-salesforce","tag-flow","tag-omni-channel","tag-release","tag-salesforce","tag-spring-17"],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Spring-17.gif?fit=204%2C108&ssl=1","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":3951,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/creating-salesforce-query-builder-in-node-js-and-angularjs-using-salesforce-rest-api-and-oauth2\/","url_meta":{"origin":5885,"position":0},"title":"Creating Salesforce Query Builder in Node.js and AngularJs using Salesforce REST API and OAuth2 with Heroku Button","author":"Jitendra","date":"August 18, 2014","format":false,"excerpt":"In this post, we will be creating a\u00a0Salesforce Query (SOQL) Builder.\u00a0It uses Google's Angularjs MVC Javascript library and REST API provided by Salesforce. For Authentication, it uses OAuth2. Node.js is used as a primary language and hosted on Heroku. If you want to directly deploy to your Heroku Account, You\u2026","rel":"","context":"In &quot;HTML&quot;","block_context":{"text":"HTML","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/webtech\/web\/"},"img":{"alt_text":"SOQL Builder Using Node.js AngularJs Salesforce REST API on Heroku","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2014\/08\/SOQL-Builder-Using-Node.js-AngularJs-Salesforce-REST-API-on-Heroku-1024x504.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2014\/08\/SOQL-Builder-Using-Node.js-AngularJs-Salesforce-REST-API-on-Heroku-1024x504.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2014\/08\/SOQL-Builder-Using-Node.js-AngularJs-Salesforce-REST-API-on-Heroku-1024x504.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":4136,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/salesforce-spring-15-some-highlighted-features\/","url_meta":{"origin":5885,"position":1},"title":"Salesforce Spring 15 &#8211; some highlighted features","author":"Jitendra","date":"December 28, 2014","format":false,"excerpt":"Download PDF version of release notes from here. 1. Import Account \/ Contact from 16 different sources (previously generic csv was only option to import). 2. Salesforce Analytics Query language (SAQL) We already know about SOQL and SOSL. This is new Query language for Analytics cloud to enable ad hoc\u2026","rel":"","context":"In &quot;Salesforce&quot;","block_context":{"text":"Salesforce","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/"},"img":{"alt_text":"Case Macro - Spring 15","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2014\/12\/Case-Macro-Spring-15.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2014\/12\/Case-Macro-Spring-15.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2014\/12\/Case-Macro-Spring-15.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2014\/12\/Case-Macro-Spring-15.jpg?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":3427,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/salesforce-winter-14-new-features\/","url_meta":{"origin":5885,"position":2},"title":"Salesforce Winter 14 &#8211; New Features","author":"Jitendra","date":"August 27, 2013","format":false,"excerpt":"Major Area of Release: Developer Console Canvas HTML5 Support in Visualforce Deployment related features like improved deployment Monitoring New Database methods to get records deleted , updated in specific time Renaming \"Service Cloud Console\"\u009d is renamed to \"Salesforce Console for Service\"\u009d \"Configuration Only\"\u009d sandbox renamed to \"Developer Pro\"\u009d \"Agent Configuration\"\u009d\u2026","rel":"","context":"In &quot;Salesforce&quot;","block_context":{"text":"Salesforce","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/"},"img":{"alt_text":"Salesforce Winter 14","src":"https:\/\/i0.wp.com\/jitendrazaa.com\/blog\/wp-content\/uploads\/2013\/08\/Win-14-Logo.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":4501,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/using-soapui-with-salesforce-to-test-standard-and-custom-web-services-response\/","url_meta":{"origin":5885,"position":3},"title":"Using soapUI with Salesforce to test standard and custom web services response","author":"Jitendra","date":"May 27, 2015","format":false,"excerpt":"soapUI is most common tool available to test Soap based web services, it also has capability to test REST web services. soapUI can be used to test Partner WSDL, enterprise WSDL, Tooling API, Metadata API to study capability and response from Salesforce before writing any code in Java, C# or\u2026","rel":"","context":"In &quot;Salesforce&quot;","block_context":{"text":"Salesforce","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/"},"img":{"alt_text":"Create New SoapUI project","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/05\/Create-New-SoapUI-project.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/05\/Create-New-SoapUI-project.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/05\/Create-New-SoapUI-project.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":31101,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/salesforce-spring-26-release-complete-guide-2026\/","url_meta":{"origin":5885,"position":4},"title":"Salesforce Spring &#8217;26 Release: Complete Guide 2026","author":"Jitendra Zaa","date":"January 14, 2026","format":false,"excerpt":"Complete Salesforce Spring '26 release guide: Agentforce Canvas View, Flow Builder AI drafts, LWC Complex Expressions, External Client Apps, Security updates. Official features from 826-page release notes with code examples and implementation guidance.","rel":"","context":"In &quot;Apex&quot;","block_context":{"text":"Apex","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/apex\/"},"img":{"alt_text":"Salesforce Spring 2026 Release Complete Guide - Featured Image","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2026\/01\/Salesforce-Spring-26-Release-Complete-Guide-featured.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2026\/01\/Salesforce-Spring-26-Release-Complete-Guide-featured.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2026\/01\/Salesforce-Spring-26-Release-Complete-Guide-featured.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2026\/01\/Salesforce-Spring-26-Release-Complete-Guide-featured.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2026\/01\/Salesforce-Spring-26-Release-Complete-Guide-featured.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":4709,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/using-curl-with-salesforce-rest-api\/","url_meta":{"origin":5885,"position":5},"title":"using cURL with Salesforce Rest API","author":"Jitendra","date":"July 16, 2015","format":false,"excerpt":"Workbench is one of widely used tool in Salesforce when it comes to exploring REST API of Salesforce. However\u00a0I wanted to export REST API response\u00a0in Binary format and therefore used cURL. cURL is open source command line library mostly used to test\u00a0http request. It can be downloaded from here\u00a0and official\u2026","rel":"","context":"In &quot;Salesforce&quot;","block_context":{"text":"Salesforce","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/"},"img":{"alt_text":"Salesforce visualforce security check using cURL","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/07\/Salesforce-visualforce-security-check-using-cURL.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/07\/Salesforce-visualforce-security-check-using-cURL.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/07\/Salesforce-visualforce-security-check-using-cURL.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/07\/Salesforce-visualforce-security-check-using-cURL.png?resize=700%2C400&ssl=1 2x"},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/posts\/5885","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/comments?post=5885"}],"version-history":[{"count":10,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/posts\/5885\/revisions"}],"predecessor-version":[{"id":5912,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/posts\/5885\/revisions\/5912"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/media\/5889"}],"wp:attachment":[{"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/media?parent=5885"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/categories?post=5885"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/tags?post=5885"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}