{"id":6606,"date":"2018-09-14T16:14:23","date_gmt":"2018-09-14T20:14:23","guid":{"rendered":"https:\/\/www.jitendrazaa.com\/blog\/?p=6606"},"modified":"2018-11-19T21:37:41","modified_gmt":"2018-11-20T02:37:41","slug":"build-a-salesforce-dx-plugin-in-15-minutes-dreamforce-2018","status":"publish","type":"post","link":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/build-a-salesforce-dx-plugin-in-15-minutes-dreamforce-2018\/","title":{"rendered":"Build a Salesforce DX Plugin in 15 Min"},"content":{"rendered":"<p style=\"text-align: justify;\">Before deploying metadata in Sandbox of production, have you felt that how great it would be to generate configuration workbook ? Or compare sandboxes for difference ? Or check if fields are used on any page layouts or not ? Dear reader, you are in need of custom <strong>Salesforce DX<\/strong> <strong>plugin<\/strong>.<\/p>\n<p style=\"text-align: justify;\">You heard it right, Salesforce DX allows custom plugin development. So now question is, how do you connect to Salesforce Org ? Do you need to know about <a href=\"https:\/\/www.jitendrazaa.com\/blog\/tag\/oauth\/\">OAuth<\/a> or <a href=\"https:\/\/www.jitendrazaa.com\/blog\/tag\/sso\/\">Single Sign On (SSO)<\/a> ?<\/p>\n<p style=\"text-align: justify;\">Complete source code is available on my <a href=\"https:\/\/github.com\/JitendraZaa\/sfdx-object-export\">Github repository here<\/a>.<!--more--><\/p>\n<p><strong>Prerequisite<\/strong><\/p>\n<ol>\n<li>Nodejs Installed<\/li>\n<li><a href=\"https:\/\/www.jitendrazaa.com\/blog\/tag\/salesforce-dx\/\">Salesforce DX<\/a> Installed<\/li>\n<\/ol>\n<p>First step is to install yarn using below command<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo npm install -g yarn\r\n<\/pre>\n<p>Next is to run below command, it will create a plugin Template for Salesforce DX which already has all boilerplate code to connect to Salesforce and query data.<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsfdx plugins:generate \r\n<\/pre>\n<p>Once plugin created, it&#8217;s time to link this plugin with Salesforce DX using below command<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsfdx plugins:link foldername\r\n#If already in folder then folder name would be blank\r\nsfdx plugins:link \r\n<\/pre>\n<p>Below is the structure of directory<\/p>\n<figure id=\"attachment_6651\" aria-describedby=\"caption-attachment-6651\" style=\"width: 241px\" class=\"wp-caption aligncenter\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-6651\" src=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2018\/09\/Salesforce-DX-Plugin-Structure.png?resize=241%2C679&#038;ssl=1\" alt=\"Salesforce DX Plugin Structure\" width=\"241\" height=\"679\" srcset=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2018\/09\/Salesforce-DX-Plugin-Structure.png?w=241&amp;ssl=1 241w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2018\/09\/Salesforce-DX-Plugin-Structure.png?resize=106%2C300&amp;ssl=1 106w\" sizes=\"auto, (max-width: 241px) 100vw, 241px\" \/><figcaption id=\"caption-attachment-6651\" class=\"wp-caption-text\">Salesforce DX Plugin Structure<\/figcaption><\/figure>\n<p>As per above folder structure, I&#8217;m running command from DF18DEMO and src is immediate folder which contains plugin code, then below command would be used to link this code with Salesforce DX<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">  \r\nsfdx plugins:link \r\n<\/pre>\n<p>To run this plugin, we need to run command<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">  \r\nsfdx hello:org -u jit11\r\n<\/pre>\n<p>Above, jit11 is already approved org using command sfdx force:auth:web:login<\/p>\n<p>Below image shows summary of commands and its results<\/p>\n<figure id=\"attachment_6652\" aria-describedby=\"caption-attachment-6652\" style=\"width: 689px\" class=\"wp-caption aligncenter\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-6652\" src=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2018\/09\/Salesforce-DX-Commands.png?resize=689%2C149&#038;ssl=1\" alt=\"Salesforce DX Commands\" width=\"689\" height=\"149\" srcset=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2018\/09\/Salesforce-DX-Commands.png?w=689&amp;ssl=1 689w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2018\/09\/Salesforce-DX-Commands.png?resize=300%2C65&amp;ssl=1 300w\" sizes=\"auto, (max-width: 689px) 100vw, 689px\" \/><figcaption id=\"caption-attachment-6652\" class=\"wp-caption-text\">Salesforce DX Commands<\/figcaption><\/figure>\n<p>Download code from <a href=\"https:\/\/github.com\/JitendraZaa\/sfdx-object-export\">here<\/a>\u00a0,\u00a0To run plugin which generates workbook. After downloading, run link command. Below are detail of various command parameters<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nUSAGE\r\n  $ sfdx DF18:fileoutput\r\n\r\nOPTIONS\r\n  -f, --force                                      example boolean flag\r\n\r\n  -m,                                              Comma separated list of objects to be exported. \r\n                                                   If blank then every object of Org would be exported\r\n\r\n  -p, --path                                       File Name with full Path to\r\n                                                   create Excel File\r\n\r\n  -u, --targetusername=targetusername              username or alias for the\r\n                                                   target org; overrides default\r\n                                                   target org\r\n\r\n  -v, --targetdevhubusername=targetdevhubusername  username or alias for the dev\r\n                                                   hub org; overrides default\r\n                                                   dev hub org\r\n\r\n  --apiversion=apiversion                          override the api version used\r\n                                                   for api requests made by this\r\n                                                   command\r\n\r\n  --json                                           format output as json\r\n\r\n  --loglevel=(trace|debug|info|warn|error|fatal)   logging level for this\r\n                                                   command invocation\r\n\r\nEXAMPLE\r\n  Example : sfdx DF18:fileoutput -u jit27 -m &quot;Account,Lead,Opportunity&quot;\r\nJitendras-MBP:sfdx-plugin jitendra.zaaibm.com$ sfdx DF18:fileoutput --help\r\nUSAGE\r\n  $ sfdx DF18:fileoutput\r\n\r\nOPTIONS\r\n  -f, --force                                      example boolean flag\r\n\r\n  -m,                                              Comma separated list of objects to be exported. \r\n                                                   If blank then every object of Org would be exported\r\n\r\n  -p, --path                                       File Name with full Path to\r\n                                                   create Excel File\r\n<\/pre>\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\/2HNsmDNspyJGVM\" 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=\"Build sfdx plugin in 15 minutes\" href=\"\/\/www.slideshare.net\/jitendrazaa\/build-sfdx-plugin-in-15-minutes\" target=\"_blank\" rel=\"noopener\">Build sfdx plugin in 15 minutes<\/a> <\/strong> from <strong><a href=\"https:\/\/www.slideshare.net\/jitendrazaa\" target=\"_blank\" rel=\"noopener\">Jitendra Zaa<\/a><\/strong><\/div>\n","protected":false},"excerpt":{"rendered":"<p>My Dreamforce Session to create a Salesforce DX plugin in 15 minutes<\/p>\n","protected":false},"author":1,"featured_media":6650,"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":[275,414,415,181],"class_list":["post-6606","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-salesforce","tag-dreamforce","tag-salesforce-dx","tag-sfdx","tag-slideshare"],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2018\/09\/Build-a-Salesforce-DX-Plugin-in-15-Min.png?fit=433%2C179&ssl=1","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":6951,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/mastering-visual-studio-and-salesforce-dx\/","url_meta":{"origin":6606,"position":0},"title":"Mastering Visual Studio and Salesforce DX","author":"Jitendra","date":"January 14, 2020","format":false,"excerpt":"3.5 hours of video to become Master on using and navigating Visual Studio, Need of scratch org and building modular application using Unlocked Packages","rel":"","context":"In &quot;Salesforce&quot;","block_context":{"text":"Salesforce","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/"},"img":{"alt_text":"Salesforce DX on Udemy","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2020\/01\/Salesforce-DX-on-Udemy.png?fit=1200%2C693&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2020\/01\/Salesforce-DX-on-Udemy.png?fit=1200%2C693&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2020\/01\/Salesforce-DX-on-Udemy.png?fit=1200%2C693&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2020\/01\/Salesforce-DX-on-Udemy.png?fit=1200%2C693&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2020\/01\/Salesforce-DX-on-Udemy.png?fit=1200%2C693&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":6360,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/import-and-export-records-using-salesforce-dx\/","url_meta":{"origin":6606,"position":1},"title":"Import and Export Records using Salesforce DX","author":"Jitendra","date":"November 13, 2017","format":false,"excerpt":"Using Salesforce DX to Export and Import records into regular Salesforce Instances without dependency on developer hub org","rel":"","context":"In &quot;Salesforce&quot;","block_context":{"text":"Salesforce","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/"},"img":{"alt_text":"Import and Export Records using SalesforceDx","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/11\/Import-and-Export-Records-using-SalesforceDx.png?fit=1167%2C347&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/11\/Import-and-Export-Records-using-SalesforceDx.png?fit=1167%2C347&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/11\/Import-and-Export-Records-using-SalesforceDx.png?fit=1167%2C347&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/11\/Import-and-Export-Records-using-SalesforceDx.png?fit=1167%2C347&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/11\/Import-and-Export-Records-using-SalesforceDx.png?fit=1167%2C347&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":6353,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/use-metadata-api-with-salesforce-dx\/","url_meta":{"origin":6606,"position":2},"title":"Use Metadata API with Salesforce DX","author":"Jitendra","date":"November 12, 2017","format":false,"excerpt":"How to use SalesforceDX to deploy metadata in Sandboxes or Non-Scratch Salesforce instances","rel":"","context":"In &quot;Salesforce&quot;","block_context":{"text":"Salesforce","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/"},"img":{"alt_text":"Use Metadata API or Package.xml with Salesforce DX","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/11\/Use-Metadata-API-or-Package.xml-with-SFDX.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\/2017\/11\/Use-Metadata-API-or-Package.xml-with-SFDX.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/11\/Use-Metadata-API-or-Package.xml-with-SFDX.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/11\/Use-Metadata-API-or-Package.xml-with-SFDX.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/11\/Use-Metadata-API-or-Package.xml-with-SFDX.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":31310,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/salesforce-mcp-server-for-claude-code-mcp-clients-setup\/","url_meta":{"origin":6606,"position":3},"title":"Salesforce MCP Server for Claude Code &amp; MCP Clients: Setup Guide 2026","author":"Jitendra Zaa","date":"January 30, 2026","format":false,"excerpt":"Master Salesforce MCP Server setup for Claude Code and other MCP clients. Step-by-step guide covering DX MCP Server, OAuth setup, hosted servers, and mcp-remote configuration.","rel":"","context":"In &quot;AI&quot;","block_context":{"text":"AI","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/ai\/"},"img":{"alt_text":"Salesforce MCP Server for Claude Code & MCP Clients - Complete Developer Guide 2026","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2026\/01\/salesforce-mcp-server-claude-code-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-mcp-server-claude-code-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-mcp-server-claude-code-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-mcp-server-claude-code-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-mcp-server-claude-code-guide-featured.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":6062,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/getting-started-with-salesforce-dx-salesforce-developer-experience\/","url_meta":{"origin":6606,"position":4},"title":"Most Frequently used SFDX Commands","author":"Jitendra","date":"May 25, 2017","format":false,"excerpt":"Introduction and basics of Salesforce Developer Experience (Salesforce DX) with source code and Video tutorials","rel":"","context":"In &quot;Salesforce&quot;","block_context":{"text":"Salesforce","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/"},"img":{"alt_text":"Salesforce Developer Experience - SFDX","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/05\/sfdx.jpg-large.jpg?fit=1024%2C512&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/05\/sfdx.jpg-large.jpg?fit=1024%2C512&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/05\/sfdx.jpg-large.jpg?fit=1024%2C512&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/05\/sfdx.jpg-large.jpg?fit=1024%2C512&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":6930,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/install-manage-package-in-scratch-org-using-salesforce-dx\/","url_meta":{"origin":6606,"position":5},"title":"Install Manage Package in Scratch Org using Salesforce DX","author":"Jitendra","date":"December 27, 2019","format":false,"excerpt":"Install CPQ, Field Service Lightning, B2B Commerce cloud in Scratch Org using SFDX Command","rel":"","context":"In &quot;Salesforce&quot;","block_context":{"text":"Salesforce","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/"},"img":{"alt_text":"Install Manage Package using SFDX in Scratch Org","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2019\/12\/Install-Manage-Package-using-SFDX-in-Scratch-Org.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\/2019\/12\/Install-Manage-Package-using-SFDX-in-Scratch-Org.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2019\/12\/Install-Manage-Package-using-SFDX-in-Scratch-Org.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2019\/12\/Install-Manage-Package-using-SFDX-in-Scratch-Org.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2019\/12\/Install-Manage-Package-using-SFDX-in-Scratch-Org.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\/6606","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=6606"}],"version-history":[{"count":8,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/posts\/6606\/revisions"}],"predecessor-version":[{"id":6655,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/posts\/6606\/revisions\/6655"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/media\/6650"}],"wp:attachment":[{"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/media?parent=6606"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/categories?post=6606"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/tags?post=6606"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}