{"id":5835,"date":"2018-01-29T16:58:01","date_gmt":"2018-01-29T16:58:01","guid":{"rendered":"http:\/\/www.jitendrazaa.com\/blog\/?p=5835"},"modified":"2018-02-26T22:07:33","modified_gmt":"2018-02-26T22:07:33","slug":"considerations-and-best-practices-for-salesforce-dataloading","status":"publish","type":"post","link":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/considerations-and-best-practices-for-salesforce-dataloading\/","title":{"rendered":"Considerations and Best practices for Salesforce Dataloading"},"content":{"rendered":"<p style=\"text-align: justify;\">Although we are doing data loading in Salesforce from ages, its very common to miss some steps or considerations. Therefore thought to list some of best practices and considerations I follow before or during data load process.<\/p>\n<figure id=\"attachment_6388\" aria-describedby=\"caption-attachment-6388\" style=\"width: 997px\" class=\"wp-caption aligncenter\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-6388\" src=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2018\/01\/Salesforce-Dataloader.png?resize=997%2C793&#038;ssl=1\" alt=\"Salesforce Dataloader\" width=\"997\" height=\"793\" srcset=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2018\/01\/Salesforce-Dataloader.png?w=997&amp;ssl=1 997w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2018\/01\/Salesforce-Dataloader.png?resize=300%2C239&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2018\/01\/Salesforce-Dataloader.png?resize=768%2C611&amp;ssl=1 768w\" sizes=\"auto, (max-width: 997px) 100vw, 997px\" \/><figcaption id=\"caption-attachment-6388\" class=\"wp-caption-text\">Salesforce Data loader Considerations<\/figcaption><\/figure>\n<p><!--more--><\/p>\n<ul style=\"text-align: justify;\">\n<li><strong>Developer note field<\/strong> &#8211; I mostly create a text field on every object where data is being loaded. This field helps to identify existing data verses newly loaded data. This field can be deleted after few weeks of data loading. Content in this field is like\u00a0\u00a0<em>Data loaded on 21-Jan<\/em>,\u00a0 <em>Mock B data loaded on 29 Jan by xyz<\/em>\u00a0 etc.<\/li>\n<li><strong>Legacy primary key<\/strong> &#8211; This is external Id field which contains primary key of external system. It helps to relate data between Salesforce and legacy system if needed.<\/li>\n<li><strong>Set Inactive users as Owner<\/strong> &#8211; We can load historical data with Inactive users. This is great feature if you don&#8217;t want to loose audit information. It can be enabled using User Interface options &#8211;\u00a0&#8220;Update Records with Inactive Owners&#8221;.<\/li>\n<li><strong>Load Audit fields<\/strong> : Use permission set \/ profile to enable editing of audit fields like created date and created by fields.\u00a0 We can enable it at profile or permission set level using permission &#8220;Set Audit Fields upon Record Creation&#8221;.<\/li>\n<li>Audit fields can only set <strong>while inserting records<\/strong>. Make sure this is considered, otherwise we need to delete record and insert back again to populate audit fields.<\/li>\n<li>Make sure local computers timezone is set to Hawaii (<a href=\"https:\/\/help.salesforce.com\/articleView?id=000005099&amp;language=en_US&amp;type=1\">article link<\/a>). Restart your system and start dataloader. Dataloader should show locale as Hawaii. You can also set timezone as GMT manually for data loader.<\/li>\n<li>If you are using SQL Server, then convert date to UTC and then load datetime into Salesforce.<\/li>\n<li>If you are using SQL Server, You can use this code to convert T-SQL date to Salesforce date format &#8211;\u00a0<em>CONVERT(NVARCHAR,GETDATE(),126)<\/em><\/li>\n<li>For supported Datetime format read more in detail at <a href=\"http:\/\/www.simplysfdc.com\/2013\/09\/salesforce-data-loader-time-zone.html\">Johan&#8217;s blog<\/a><\/li>\n<li>If because of internet issue, connection drops and load fails in between, then in dataloader setting, you can restart from where connection dropped. It shows that what was success count and we can enter row number from where we want dataloader to restart processing. (<em>shown in below image)<\/em><\/li>\n<li>If you are using SQL Server, then DBAmp or Cozyroc can be used to load data into Salesforce.<\/li>\n<li>If number of fields between legacy system and Salesforce doesn&#8217;t match, then instead of ignoring legacy system&#8217;s field, you can create a hidden text area field and populate it with csv values.<\/li>\n<li>While loading address in Account or Contact, most of time number of address are more than 2. Salesforce supports two address only, out of box (Shipping and Billing address). In these cases, you might end up creating custom child object to store multiple addresses.<\/li>\n<li>Legacy note in Salesforce is replaced by <strong>Enhanced notes<\/strong>. To load Enhanced notes using Dataloader, follow <a href=\"https:\/\/help.salesforce.com\/apex\/HTViewSolution?id=000230867&amp;language=en_US\">this post<\/a>. If using other tools then we need to load notes in Base64 format in<a href=\"https:\/\/developer.salesforce.com\/docs\/atlas.en-us.api.meta\/api\/sforce_api_erd_contentnote.htm\"> ContentNote<\/a> object and then link ContentNote with record using <a href=\"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/deep-drive-in-junction-object-create-many-to-many-relationship-in-salesforce\/\">junction<\/a> object <a href=\"https:\/\/developer.salesforce.com\/docs\/atlas.en-us.api.meta\/api\/sforce_api_erd_contentnote.htm\">ContentDocumentLink<\/a> object.<\/li>\n<li>If there are attachments to be loaded, then it will take different approach. Check this article to use Dataloader to <a href=\"https:\/\/help.salesforce.com\/articleView?id=loader_attachments.htm&amp;type=5\">load attachments<\/a>.<\/li>\n<li>If file size is less than 25 MB then we can use attachments other wise you might need to use Chatter Files.<\/li>\n<li>If any of field contains\u00a0<strong>Rich Text<\/strong>, then we have to be little careful here. CSV file containing Rich text doesn&#8217;t work properly. you might need to think on some alternatives like converting rich text to simple text.<\/li>\n<li>Loading attachment may cause heap size memory issues, in those cases try to minimize batch size.<\/li>\n<\/ul>\n<figure id=\"attachment_6387\" aria-describedby=\"caption-attachment-6387\" style=\"width: 771px\" class=\"wp-caption aligncenter\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-6387\" src=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2018\/01\/Salesforce-DataLoader-Start-from-where-connection-dropped.png?resize=771%2C376&#038;ssl=1\" alt=\"Salesforce DataLoader - Start from where connection dropped\" width=\"771\" height=\"376\" srcset=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2018\/01\/Salesforce-DataLoader-Start-from-where-connection-dropped.png?w=771&amp;ssl=1 771w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2018\/01\/Salesforce-DataLoader-Start-from-where-connection-dropped.png?resize=300%2C146&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2018\/01\/Salesforce-DataLoader-Start-from-where-connection-dropped.png?resize=768%2C375&amp;ssl=1 768w\" sizes=\"auto, (max-width: 771px) 100vw, 771px\" \/><figcaption id=\"caption-attachment-6387\" class=\"wp-caption-text\">Salesforce DataLoader &#8211; Start from where connection dropped<\/figcaption><\/figure>\n<p style=\"text-align: justify;\"><strong>Fixing Errors : <\/strong><\/p>\n<p style=\"text-align: justify;\">If you get below error<\/p>\n<p style=\"text-align: justify;\"><strong>CSV Error: Invalid CSV file format. Please select a different file.<\/strong><br \/>\n<strong>com.sforce.async.CSVReader$CSVParseException: Not expecting more text after end quote<\/strong><\/p>\n<p style=\"text-align: justify;\">Then it can be fixed following below points<\/p>\n<ul style=\"text-align: justify;\">\n<li>In CSV file, one column has comma. I normally replace comma by semicolon (If accepted by client) or you can enclose it in double quotes<\/li>\n<li>In CSV file, one column has double quotes. I normally replace double quotes by single quotes.<\/li>\n<li>CSV file contains non ASCII characters. It can be removed by searching using expression <strong>[^\\x00-\\x7F]+.\u00a0<\/strong>Read more <a href=\"http:\/\/stackoverflow.com\/questions\/20889996\/notepad-how-to-remove-all-non-ascii-characters-with-regex\">here<\/a>.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Although we are doing data loading in Salesforce from ages, its very common to miss some steps or considerations. Therefore thought to list some of best practices and considerations I follow before or during data load process.<\/p>\n","protected":false},"author":1,"featured_media":0,"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":[72,292],"class_list":["post-5835","post","type-post","status-publish","format-standard","hentry","category-salesforce","tag-dataloader","tag-sql-server"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":5689,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/considerations-and-best-practices-before-enabling-salesforce-shield-platform-encryption\/","url_meta":{"origin":5835,"position":0},"title":"Considerations and Best Practices before enabling Salesforce Shield Platform Encryption","author":"Jitendra","date":"September 1, 2016","format":false,"excerpt":"Best practices and things to consider before rolling out Shield Platform Encryption for your customer","rel":"","context":"In &quot;Salesforce&quot;","block_context":{"text":"Salesforce","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/"},"img":{"alt_text":"Salesforce Shield Platform Encryption","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2016\/08\/Salesforce-Shield-Platform-Encryption.jpg?fit=640%2C366&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2016\/08\/Salesforce-Shield-Platform-Encryption.jpg?fit=640%2C366&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2016\/08\/Salesforce-Shield-Platform-Encryption.jpg?fit=640%2C366&ssl=1&resize=525%2C300 1.5x"},"classes":[]},{"id":3855,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/large-data-volumes-ldv-in-salesforce\/","url_meta":{"origin":5835,"position":1},"title":"Large Data Volumes (LDV) in Salesforce | FAQs | Interview Questions","author":"Jitendra","date":"April 18, 2014","format":false,"excerpt":"You would like to go through this useful cheat sheet for \"Query and Search\" optimization, few of this is discussed in this post as FAQ. 171 : How Standard Fields and Custom Fields related information is saved inside Salesforce Database? Is every Standard and Custom Object is created as a\u2026","rel":"","context":"In &quot;Configuration&quot;","block_context":{"text":"Configuration","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/configuration\/"},"img":{"alt_text":"Skinny Table","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2014\/04\/Skinny-Table.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":5796,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/lightning-data-services-standard-controller-for-lightning-components\/","url_meta":{"origin":5835,"position":2},"title":"Lightning Data Service &#8211; Standard Controller for Lightning Components","author":"Jitendra","date":"July 22, 2017","format":false,"excerpt":"Best Practices for Salesforce Lightning Component. How Lightning Data Service can improve Lightning Component performance and solve inconsistent data problem without writing single line of Apex code. Demo source code, image and slides included.","rel":"","context":"In &quot;Apex&quot;","block_context":{"text":"Apex","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/apex\/"},"img":{"alt_text":"Salesforce Lightning Data Services","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/07\/Salesforce-Lightning-Data-Services.png?fit=1045%2C395&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/07\/Salesforce-Lightning-Data-Services.png?fit=1045%2C395&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/07\/Salesforce-Lightning-Data-Services.png?fit=1045%2C395&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/07\/Salesforce-Lightning-Data-Services.png?fit=1045%2C395&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":31003,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/salesforce-shield-platform-encryption-complete-guide-setup\/","url_meta":{"origin":5835,"position":3},"title":"Salesforce Shield Platform Encryption: Complete Guide 2026 | Setup, Best Practices &amp; Implementation","author":"Jitendra Zaa","date":"January 7, 2026","format":false,"excerpt":"Master Salesforce Shield Platform Encryption: Complete guide on setup, BYOK, field selection, Classic vs Shield comparison, and best practices.","rel":"","context":"In &quot;Experience&quot;","block_context":{"text":"Experience","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/experience\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2026\/01\/salesforce-shield-platform-encryption-guide-featured-1.png?fit=1200%2C574&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2026\/01\/salesforce-shield-platform-encryption-guide-featured-1.png?fit=1200%2C574&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2026\/01\/salesforce-shield-platform-encryption-guide-featured-1.png?fit=1200%2C574&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2026\/01\/salesforce-shield-platform-encryption-guide-featured-1.png?fit=1200%2C574&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2026\/01\/salesforce-shield-platform-encryption-guide-featured-1.png?fit=1200%2C574&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":5094,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/10-salesforce-integration-design-considerations-from-architect-point-of-view-mind-mapping-included\/","url_meta":{"origin":5835,"position":4},"title":"10 Salesforce Integration design considerations from Architect point of view &#8211; Mind Mapping included","author":"Jitendra","date":"December 21, 2015","format":false,"excerpt":"After working on multiple Salesforce implementation project as an Architect, its time to share\u00a0what I learned from those implementations and would strongly suggest to be considered before designing any \"Salesforce Integration\". Below image shows \"integration mind mapping\" used by me. I use it to consider some major aspects\u00a0while discussing integration\u2026","rel":"","context":"In &quot;Salesforce&quot;","block_context":{"text":"Salesforce","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/"},"img":{"alt_text":"Salesforce Integration Mind mapping diagram","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/12\/Salesforce-Integration-Mind-mapping-diagram.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/12\/Salesforce-Integration-Mind-mapping-diagram.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/12\/Salesforce-Integration-Mind-mapping-diagram.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/12\/Salesforce-Integration-Mind-mapping-diagram.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":31119,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/salesforce-mobile-offline-complete-guide-2026-briefcase-2\/","url_meta":{"origin":5835,"position":5},"title":"Salesforce Mobile Offline Complete Guide 2026 | Briefcase Builder, LWC Offline &amp; Best Practices","author":"Jitendra Zaa","date":"January 15, 2026","format":false,"excerpt":"Master Salesforce Mobile Offline in 2026: Complete guide covering Briefcase Builder, LWC Offline, Mobile App Plus, data priming, sync, and governor limits. Learn offline architecture, conflict resolution, and best practices with official Salesforce sources.","rel":"","context":"In &quot;Experience&quot;","block_context":{"text":"Experience","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/experience\/"},"img":{"alt_text":"Salesforce Mobile Offline Complete Guide 2026 - Featured Image","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2026\/01\/Salesforce-Mobile-Offline-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-Mobile-Offline-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-Mobile-Offline-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-Mobile-Offline-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-Mobile-Offline-Complete-Guide-featured.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/posts\/5835","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=5835"}],"version-history":[{"count":12,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/posts\/5835\/revisions"}],"predecessor-version":[{"id":6395,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/posts\/5835\/revisions\/6395"}],"wp:attachment":[{"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/media?parent=5835"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/categories?post=5835"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/tags?post=5835"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}