{"id":6244,"date":"2017-11-21T02:30:58","date_gmt":"2017-11-21T02:30:58","guid":{"rendered":"http:\/\/www.jitendrazaa.com\/blog\/?p=6244"},"modified":"2017-11-21T02:35:51","modified_gmt":"2017-11-21T02:35:51","slug":"a-tale-of-governor-limits-and-solutions-in-salesforce","status":"publish","type":"post","link":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/a-tale-of-governor-limits-and-solutions-in-salesforce\/","title":{"rendered":"A Tale of Governor Limits and Solutions in Salesforce"},"content":{"rendered":"<p style=\"text-align: justify;\"><em>This is a work of fiction. Names, characters, businesses, places, events and incidents are either the products of the author\u2019s imagination or used in a fictitious manner. Any resemblance to actual persons, living or dead, or actual events is purely coincidental.<\/em><\/p>\n<p style=\"text-align: justify;\">Ha ha ha joking.. <strong>its combination of many real stories of my previous projects<\/strong> and few readers might be from my team itself \ud83d\ude09 . Leave comment my brave team mates if you are able to co-relate !!!<\/p>\n<p style=\"text-align: justify;\">I tried to summaries as much as possibilities about governor limit errors and way to get out of it. Most of scenario described below may not be the first choice of Technical Architects however because of many reasons like budget, resource skill, tools available and compliance, bad decision could be taken which causes ripple effect on Salesforce scalibility.<\/p>\n<p style=\"text-align: justify;\">Before start, I would encourage readers to leave comment on post and let everyone know in this suspenseful story, did you catch governor limits and Solution already before its exposed ? <strong>In this blog post, answers are mostly in invisible\/white font which would not be seen until you highlight it. Its for few readers who don&#8217;t want spoilers.\u00a0<\/strong><\/p>\n<p>Let&#8217;s start a story.<!--more--><\/p>\n<h2><strong>Part 1<\/strong><\/h2>\n<p style=\"text-align: justify;\">There was a huge Salesforce Implementation project going on from last 18 months. I Joined this project almost at end where all major decisions were taken and implementation was done. There was one particular screen where total 14 API calls made. Salesforce team tried their best to convert this to single API and move everything else to ETL tool however it was ruled out, because of many non disclosable limitations and reasons. For sake of simplicity, lets assume Visualforce page is designed in such a way that each section on page needs two API callouts. User can navigate each section one by one or jump to last section. If user directly jumps to last section then all 14 API calls will be made in single transaction. One thing to consider here is that API calls are dependent, You cannot call API number 2 before API 1.<\/p>\n<p style=\"text-align: justify;\">You already started imagining problems ? Well, lets wait for <span style=\"color: #ffffff;\">invisible<\/span><em>(Select previous invisible text)<\/em> text.<\/p>\n<hr \/>\n<p><strong>Problem 1<\/strong><\/p>\n<p style=\"text-align: justify;\">You need to call two APIs in sequence however <strong>save response<\/strong> from first API. Do some processing and use it as request for second API. Guess the problem ?<strong>\u00a0<\/strong><span style=\"color: #ffffff;\"><strong>By default, callouts aren\u2019t allowed after DML operations in the same transaction because DML operations result in pending uncommitted work that prevents callouts from executing.<\/strong> <\/span><em>(Select previous invisible text for problem)<\/em><\/p>\n<p><strong>Solution<\/strong><\/p>\n<p style=\"text-align: justify;\">Guess a solution ? <span style=\"color: #ffffff;\"><strong>Create an\u00a0Apex based REST API which will perform DML operations<\/strong><\/span><em>(Select previous invisible text for solution).\u00a0<\/em>This is not a suggested solution however it was the quick way looked feasible at that time.<\/p>\n<hr \/>\n<p><strong>Problem 2<\/strong><\/p>\n<p style=\"text-align: justify;\">So, everything was fine, code implemented and tested successfully. However on stress environment, guess what obvious error QA team must have started facing ? Any guess ? Error was\u00a0<strong><span style=\"color: #ffffff;\">Concurrent requests limit exceeded<\/span>.\u00a0<\/strong>Check <a href=\"https:\/\/developer.salesforce.com\/blogs\/engineering\/2015\/11\/avoiding-the-concurrent-request-limit-via-synchronous-callout-optimization.html\">this blog post<\/a> to know cause of this error message.<\/p>\n<p><strong>Solution<\/strong><\/p>\n<p style=\"text-align: justify;\">We cannot use Batch, future or <a href=\"https:\/\/developer.salesforce.com\/docs\/atlas.en-us.apexcode.meta\/apexcode\/apex_queueing_jobs.htm\">Queueable <\/a>Apex because, response needs to be returned on Visualforce. User needs to change some choices before hitting next section. So best solution found without hitting <span style=\"color: #ffffff;\"><strong>Concurrent limit<\/strong><\/span> request error was to use\u00a0<strong><span style=\"color: #ffffff;\">Continuation\u00a0Object<\/span>.<\/strong> You can refer <a href=\"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/continuation-object-in-apex-asynchronous-callouts-for-long-running-request-live-demo\/\">this blog post<\/a> to read more about it. This blog post explains <a href=\"https:\/\/developer.salesforce.com\/blogs\/2017\/09\/invoking-apex-continuations-lightning-components.html\">how to use it in Lightning Component<\/a>.<\/p>\n<hr \/>\n<p><strong>Problem 3<\/strong><\/p>\n<p style=\"text-align: justify;\">Finally we were able to make our system scalable and long running requests were not problem anymore. Ohh boy, we were saved. It was time to go play table tennis, fusse ball and all your favorite games over the weekend.<\/p>\n<p style=\"text-align: justify;\">But wait, you get a call from your technical lead saying sir, new design is not working in one particular scenario. if user directly jumps to last section, we had to make 14 API callouts back to back from Apex. We got an error, guess what it is this time ? <span style=\"color: #ffffff;\"><strong><span style=\"color: #ffffff;\">You cannot use more than 3 sequential continuation\u00a0in a single request handling. You used 4 Continuation.<\/span><\/strong><\/span>\u00a0<em>(Select previous invisible text for error).<\/em><\/p>\n<p><strong>Solution<\/strong><\/p>\n<p style=\"text-align: justify;\">Was there any solution here ? Its Salesforce governor limit. If we don&#8217;t use <em>Continuation Object<\/em>, we will hit <em>Concurrent request limit error<\/em>, is catch 22 situation. But,\u00a0<a href=\"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/limitless-chaining-of-continuation-object-in-salesforce\/\">Here is the solution,<\/a>\u00a0Chain Unlimited Continuation Objects.<\/p>\n<hr \/>\n<h2><strong>Part 2<\/strong><\/h2>\n<p style=\"text-align: justify;\">We were able to solve some governor limit errors and system was atleast in working state. Problem was, it was taking around 4-6 minutes to complete end to end transactions, which was unacceptable. So, Part 2 for me was improve performance without impacting existing functionalities. So, I thought to check source code. Ohh boy, not sure which design pattern was used but almost 8-9 classes were involved. And there was one class I remember, which had more than 6k lines of code. Anyways, point is, I had very less time to address this as customers were unhappy and got threat that they may abandon System. So, my next quest was analyzing debug log. For one click, around 7 debug log files were generated. After spending hours, I found first Issue in code. Lets repeat Question &#8211; System was very slow, and there were two objects with 6 Millions+ records.<\/p>\n<p><strong>Problem 4<\/strong><\/p>\n<p style=\"text-align: justify;\">Any guess on problem, why Salesforce was slow ? Should not be difficult to guess \ud83d\ude42<span style=\"color: #ffffff;\">\u00a0<\/span><strong><span style=\"color: #ffffff;\">It was unindexed SOQL.<\/span>\u00a0<\/strong>Problem was not only indexing issue but the way Database was designed. Code was fetching information from 5 level of objects and condition was written on relationship fields. The object on which SOQL was primarily written had 6 Millions + records. Solution to this problem was to convert these 5 objects to one flat object (denormalized table) with indexed field. However application was already in use from last 2 years and there were huge impact. What else could have been done to address the problem asap ?<\/p>\n<p><strong>Solution 4<\/strong><\/p>\n<p style=\"text-align: justify;\"><span style=\"color: #ffffff;\"><strong>We searched whole organization using Force.com IDE to identify SOQL on same object and which fields from parents were used in condition. We created actual field on child object and indexed it.\u00a0<\/strong><\/span><em>Select previous line to know answer.<\/em><\/p>\n<hr \/>\n<p><strong>Problem 5<\/strong><\/p>\n<p style=\"text-align: justify;\">So, in solution 4, we identified all fields which needs to be created in flat object. We considered leaf object as flat object because it will always have\u00a0 parent records (5 level). Problem was, how to update these fields without impacting existing code? We didn&#8217;t needed these fields in current transaction so decided to use Asynchronous Apex, <a href=\"https:\/\/developer.salesforce.com\/docs\/atlas.en-us.apexcode.meta\/apexcode\/apex_queueing_jobs.htm\">Queueable Apex<\/a>. Advantage of this approach was that we didn&#8217;t touch any existing trigger or Apex class. Do you smell problem here ? <span style=\"color: #ffffff;\"><strong>Started getting sporadic errors related to &#8211; <a style=\"color: #ffffff;\" href=\"https:\/\/help.salesforce.com\/articleView?id=000229525&amp;type=1\">Unable to lock row &#8211; Record currently unavailable<\/a>,<\/strong>\u00a0<\/span><em>read problem by selecting previous text.<\/em><\/p>\n<p><strong>Solution 5<\/strong><\/p>\n<p style=\"text-align: justify;\">If we move our code in Asynchronous block and if this code takes more than 10 second to complete then other area of application may receive this error. unfortunately, in our case around 7-8k records were going through DML at same time causing lock more than 10 sec. So as a solution, we did what we <strong>were trying to avoid<\/strong>, writing trigger on flat object to populate indexed fields.<\/p>\n<hr \/>\n<p><strong>Problem 6<\/strong><\/p>\n<p style=\"text-align: justify;\">There were some Apex code where around 7-8k records were upserted in same transaction. This object was vanilla object without any triggers. We added a trigger on this object to populate fields before insert or update of record. Guess the possible governor limit in this approach? QA and UAT testing was successful however our best friend\u00a0<strong><a href=\"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/apex\/faq-writing-test-class-in-salesforce\/\">Apex Test classes<\/a>\u00a0<\/strong>saved us by giving early alarm of one possible error.\u00a0&#8220;<span style=\"color: #ffffff;\"><strong>Apex CPU time limit exceeded<\/strong><\/span>&#8221;\u00a0<em>(Select previous invisible text for error).\u00a0<\/em><a href=\"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/apex\/faq-writing-test-class-in-salesforce\/\">Check this blog post for best practices<\/a>.<\/p>\n<p><strong>Solution 6<\/strong><\/p>\n<p style=\"text-align: justify;\">When we are inserting \/ updating around 7k records in single transactions, even small code will cause\u00a0Apex CPU time limit exceeded error. First of all, we should have avoided this huge DML in single transaction. But implementation was like a spider web with huge dependency with each other. Didn&#8217;t had much time left to perform impact analysis as old code was already on production.<\/p>\n<p><strong>So how did we solved it ?\u00a0<\/strong><span style=\"color: #ffffff;\">We broke upsert into update and insert by introducing extra SOQL. Other than this, we did dirty check before performing any update operation.<\/span> <em>Select previous line to know answer.\u00a0<\/em>Believe me, dirty check reduced around 70% of DML need in update operations.<\/p>\n<p><strong>Few important best practices I would like to share here:<\/strong><\/p>\n<ol>\n<li style=\"text-align: justify;\">We <strong>cannot use static variable to avoid recursive execution of trigger<\/strong> if 200+ record gets inserted via Apex. Static variable approach will work with dataloader but in case of Apex, trigger will not execute after 200 until its handled specially.<\/li>\n<li style=\"text-align: justify;\">Dirty check of record is very important. In your Apex code, before performing any update DML, check if data is even changed or not ? I have seen code around 90% of time, where DML is done on record but it already has same value in Database. All you have to do is issue 1 extra SOQL and compare. It will save CPU time as well DML governor limit. <strong>Its huge game changing approach in LDV (Large Data Volume) orgs<\/strong>.<\/li>\n<li style=\"text-align: justify;\"><strong><a href=\"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/all-about-upsert-and-external-id-in-dataloader-and-apex-videos\/\">Upsert<\/a> statements are very slow.\u00a0<\/strong>Even slower than combined insert and update. It gives lots of advantages however needs to be considered while we are working with LDV.<a href=\"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/all-about-upsert-and-external-id-in-dataloader-and-apex-videos\/\"> Upsert is even worst in terms of performance<\/a> when we create parent child relationship using parent records external Id.<\/li>\n<\/ol>\n<hr \/>\n<p><strong>Problem 7<\/strong><\/p>\n<p style=\"text-align: justify;\">This would be last problem for sake of simplicity of this blog post. All above solutions worked but there was a problem. This leaf object was growing exponentially. After stable code, it reached 10 Millions+ records. This object was only used to display around 4-5k records on screen in read only format with the help of server side pagination. We still wanted to show data on screen however reduce total number of records being created in object. Any guess ?<\/p>\n<p><strong>Solution 7<\/strong><\/p>\n<p style=\"text-align: justify;\"><span style=\"color: #ffffff;\">We saved these 4-5k records in single JSON file and saved in Attachment. At controller side, we used wrapper class to deserialize records and show it back on page.<\/span>\u00a0<em>Select previous line to know answer.<\/em><\/p>\n<p style=\"text-align: justify;\">Hope this blog post will give you a different perspective while designing solutions on Force.com platform. If you reached till this point then am pretty sure you must have got more than half solution by your self.<\/p>\n<p style=\"text-align: justify;\"><strong>Let me know Tale of Governor limit in your project and how you handled it in below comment section.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Thrilling story of Salesforce Technical Architect on a quest to solve application problems and avoid governor limit errors<\/p>\n","protected":false},"author":1,"featured_media":6267,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_post_was_ever_published":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":""},"categories":[9],"tags":[344,425,401],"class_list":["post-6244","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-salesforce","tag-architect","tag-governor-limits","tag-technical-architecture"],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/09\/A-Tale-of-Governor-Limits-and-Solutions-in-Salesforce.jpg?fit=900%2C417&ssl=1","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":28,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/salesforce-interview-questions\/","url_meta":{"origin":6244,"position":0},"title":"Salesforce Interview Questions &#8211; Part 1","author":"Jitendra","date":"May 6, 2010","format":false,"excerpt":"Set of most often asked questions on the salesforce.com developement","rel":"","context":"In &quot;Salesforce&quot;","block_context":{"text":"Salesforce","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":6836,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/framework-to-fix-governor-limit-of-100-jobs-in-flex-queue\/","url_meta":{"origin":6244,"position":1},"title":"Framework to fix &#8211; Governor Limit of 100 jobs in Flex Queue","author":"Jitendra","date":"April 25, 2019","format":false,"excerpt":"How to design an application in Salesforce to handle governor limit error of maximum 100 jobs in Flex Queue","rel":"","context":"In &quot;Salesforce&quot;","block_context":{"text":"Salesforce","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/"},"img":{"alt_text":"Salesforce Apex Flex Queue Governor Limit","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2019\/04\/Salesforce-Apex-Flex-Queue-Governor-Limit.png?fit=1200%2C539&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2019\/04\/Salesforce-Apex-Flex-Queue-Governor-Limit.png?fit=1200%2C539&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2019\/04\/Salesforce-Apex-Flex-Queue-Governor-Limit.png?fit=1200%2C539&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2019\/04\/Salesforce-Apex-Flex-Queue-Governor-Limit.png?fit=1200%2C539&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2019\/04\/Salesforce-Apex-Flex-Queue-Governor-Limit.png?fit=1200%2C539&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":30588,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/agentforce-vibes-the-complete-developer-guide-to-enterprise\/","url_meta":{"origin":6244,"position":2},"title":"Agentforce Vibes: The Complete Developer Guide to Enterprise Vibe Coding","author":"Jitendra Zaa","date":"December 15, 2025","format":false,"excerpt":"Complete guide to Salesforce Agentforce Vibes - enterprise vibe coding platform. Covers Vibe Codey, MCP integration, Einstein Trust Layer security, governor limits, and pro tips for Salesforce developers.","rel":"","context":"In &quot;Salesforce&quot;","block_context":{"text":"Salesforce","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/"},"img":{"alt_text":"Agentforce VibeCode","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2025\/12\/Agentforce-VibeCode-1.png?fit=1200%2C248&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2025\/12\/Agentforce-VibeCode-1.png?fit=1200%2C248&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2025\/12\/Agentforce-VibeCode-1.png?fit=1200%2C248&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2025\/12\/Agentforce-VibeCode-1.png?fit=1200%2C248&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2025\/12\/Agentforce-VibeCode-1.png?fit=1200%2C248&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":6216,"url":"https:\/\/www.jitendrazaa.com\/blog\/java\/performing-load-testing-in-salesforce-using-selenium-and-testng\/","url_meta":{"origin":6244,"position":3},"title":"Performing Load Testing in Salesforce using Selenium and TestNG","author":"Jitendra","date":"August 28, 2017","format":false,"excerpt":"Parallel execution of browsers in Selenium with the help of TestNG and determining maximum operating capacity of custom code in Salesforce","rel":"","context":"In &quot;JAVA&quot;","block_context":{"text":"JAVA","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/java\/"},"img":{"alt_text":"Selenium Salesforce load Testing","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/08\/Selenium-Salesforce-load-Testing.jpg?fit=964%2C848&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/08\/Selenium-Salesforce-load-Testing.jpg?fit=964%2C848&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/08\/Selenium-Salesforce-load-Testing.jpg?fit=964%2C848&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/08\/Selenium-Salesforce-load-Testing.jpg?fit=964%2C848&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":6939,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/podcast-how-to-achieving-hyper-threading-in-salesforce\/","url_meta":{"origin":6244,"position":4},"title":"Podcast &#8211; How to Achieving Hyper-Threading in Salesforce","author":"Jitendra","date":"January 2, 2020","format":false,"excerpt":"Total number of Asynchronous Apex which includes Batch Apex, Future Method, Queueable & Scheduled job is 250k or 200 x Total User license whichever is greater. Now lets do some fact check : Execute method of Batch Apex can only call 1 Queueable Scheduler can call 50 QueueableWe can have\u2026","rel":"","context":"In &quot;Salesforce&quot;","block_context":{"text":"Salesforce","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/"},"img":{"alt_text":"Podcast - Hyper Thread iN Salesforce","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2020\/01\/Podcast-Hyper-Thread-iN-Salesforce.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\/2020\/01\/Podcast-Hyper-Thread-iN-Salesforce.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2020\/01\/Podcast-Hyper-Thread-iN-Salesforce.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2020\/01\/Podcast-Hyper-Thread-iN-Salesforce.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2020\/01\/Podcast-Hyper-Thread-iN-Salesforce.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":31927,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/salesforce-scale-center-complete-guide-performance\/","url_meta":{"origin":6244,"position":5},"title":"Salesforce Scale Center Complete Guide: Performance Monitoring &#038; Optimization | March 2026","author":"Jitendra","date":"March 12, 2026","format":false,"excerpt":"Master Salesforce Scale Center for performance monitoring and optimization. Learn setup, ApexGuru integration, concurrent Apex analysis, and best practices for enterprise scalability with 9 analysis report types.","rel":"","context":"In &quot;Apex&quot;","block_context":{"text":"Apex","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/apex\/"},"img":{"alt_text":"Salesforce Scale Center Infographic - Free self-serve performance monitoring platform with 9 report types, 30-day data retention, and 10-12 minute latency for Enterprise, Unlimited, and Professional Edition orgs","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2026\/03\/Salesforce-Scale-Center-Complete-Guide-infographic.png?fit=1200%2C1148&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2026\/03\/Salesforce-Scale-Center-Complete-Guide-infographic.png?fit=1200%2C1148&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2026\/03\/Salesforce-Scale-Center-Complete-Guide-infographic.png?fit=1200%2C1148&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2026\/03\/Salesforce-Scale-Center-Complete-Guide-infographic.png?fit=1200%2C1148&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2026\/03\/Salesforce-Scale-Center-Complete-Guide-infographic.png?fit=1200%2C1148&ssl=1&resize=1050%2C600 3x"},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/posts\/6244","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=6244"}],"version-history":[{"count":20,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/posts\/6244\/revisions"}],"predecessor-version":[{"id":6370,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/posts\/6244\/revisions\/6370"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/media\/6267"}],"wp:attachment":[{"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/media?parent=6244"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/categories?post=6244"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/tags?post=6244"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}