{"id":78821,"date":"2017-08-04T08:00:56","date_gmt":"2017-08-04T08:00:56","guid":{"rendered":"http:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/manage-arcgis-pro-add-in-loading\/"},"modified":"2018-03-26T21:14:11","modified_gmt":"2018-03-26T21:14:11","slug":"manage-arcgis-pro-add-in-loading","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/\/uncategorized\/manage-arcgis-pro-add-in-loading","title":{"rendered":"Manage ArcGIS Pro Add-In Loading"},"author":6271,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"_searchwp_excluded":""},"categories":[],"tags":[33041],"industry":[],"product":[36561,36851,36601],"class_list":["post-78821","blog","type-blog","status-publish","format-standard","hentry","tag-pro-add-ins","product-arcgis-pro","product-arcgis-pro-net","product-developers"],"acf":{"short_description":"At times it can be beneficial to separate the ArcGIS Pro SDK customizations you\u2019ve developed into more than one Pro add-in. For example...","flexible_content":[{"acf_fc_layout":"content","content":"<p>At times it can be beneficial to separate the <a href=\"http:\/\/pro.arcgis.com\/en\/pro-app\/sdk\/\">ArcGIS Pro SDK<\/a> customizations you\u2019ve developed into more than one Pro add-in. For example, you may want to enhance the capabilities of an existing add-in, or perhaps incrementally release functionality across a set of add-ins.<\/p>\n<p>In this post, we\u2019ll look at how to combine the UI aspects of your add-ins. We&#8217;ll create a simple button on a custom tab on the Pro ribbon, established by a &#8220;basic&#8221; or \u201ccore\u201d add-in, and then add a new button to it from a second add-in using a dependency.\u00a0 This concept is covered in the <a href=\"https:\/\/github.com\/Esri\/arcgis-pro-sdk\/wiki\/ProConcepts-Advanced-Topics#control-order-of-loading-using-daml\">ProConcept Advanced Topics<\/a> document, which contains important loading scheme information for both add-ins and configurations.<\/p>\n<p><strong><span style=\"text-decoration: underline\">Step 1<\/span>:<\/strong> \u00a0We build an add-in called<em> LoadFirstAddin<\/em> and create a button with the caption &#8220;Add-in 1 Button\u201d, which is placed on a new, custom tab with the caption \u201cLoading Test\u201d.\u00a0 Note the id\u2019s for AddInInfo, insert module and the control group:<\/p>\n<pre><code>&lt;ArcGIS defaultAssembly=\"LoadFirstAddIn.dll\" defaultNamespace=\"LoadFirstAddIn\" ...\n\u00a0 &lt;<strong><span style=\"color: #ff0000\">AddInInfo id=\"{8e02feab-39eb-48ff-918e-f4c22f451d1c}<\/span><span style=\"color: #ff0000\">\"<\/span><\/strong> version=\"1.0\" desktopVersion=\"2.0.8933\"&gt;\n\u00a0\u00a0\u00a0 &lt;Name&gt;LoadFirstAddIn&lt;\/Name&gt;\n\u00a0 ...\n\u00a0 &lt;\/AddInInfo&gt;\n\u00a0 &lt;modules&gt;\n\u00a0\u00a0\u00a0 &lt;<strong><span style=\"color: #ff0000\">insertModule id=\"LoadFirstAddIn_Module\"<\/span><\/strong> className=\"Module1\" autoLoad=\"false\" caption=\"Module1\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;tabs&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;tab id=\"LoadFirstAddIn_Tab1\" caption=\"Loading Test\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;group refID=\"LoadFirstAddIn_Group1\"\/&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/tab&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/tabs&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;groups&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;<strong><span style=\"color: #ff0000\">group id=\"LoadFirstAddIn_Group1\"<\/span><\/strong> caption=\"Add-in 1 Group\" appearsOnAddInTab=\"false\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;button refID=\"LoadFirstAddIn_Button1\" size=\"large\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/group&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/groups&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;controls&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;button id=\"LoadFirstAddIn_Button1\" caption=\"Add-in 1 Button\" className=\"Button1\" \n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 loadOnClick=\"true\" smallImage=\"ImagesGenericButtonBlue16.png\" largeImage=\"ImagesGenericButtonBlue32.png\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;tooltip heading=\"Tooltip Heading\"&gt;Tooltip text&lt;disabledText \/&gt;&lt;\/tooltip&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/button&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/controls&gt;\n\u00a0\u00a0\u00a0 &lt;\/insertModule&gt;\n\u00a0 &lt;\/modules&gt;\n&lt;\/ArcGIS&gt;<\/code><\/pre>\n<p><span style=\"text-decoration: underline\"><strong>Step 2<\/strong><\/span><strong>:<\/strong><strong> \u00a0<\/strong>We build a second add-in called <em>LoadSecondAddin<\/em> which sets a dependency on LoadFirstAddin by referencing its AddInInfo GUID value in a DAML dependencies section &#8212; note the GUID value of the DAML dependency element\u2019s name attribute. By declaring a dependencies section in our LoadSecondAddin\u2019s DAML, we are letting the Pro framework know that our (LoadSecondAddin) add-in depends on the DAML of another add-in (LoadFirstAddin). If your add-in depends on two or more add-ins (e.g., your button is inserted onto multiple tabs) then the dependencies section should contain a dependency element for each dependency add-in. \u00a0In this case, we reference a dependency just for LoadFirstAddin:<\/p>\n<pre><code>\u00a0 &lt;\/AddInInfo&gt;\n\u00a0 &lt;dependencies&gt;\n\u00a0\u00a0\u00a0 &lt;<strong><span style=\"color: #ff0000\">dependency name=\"{8e02feab-39eb-48ff-918e-f4c22f451d1c}\"<\/span><\/strong> \/&gt;\n\u00a0 &lt;\/dependencies&gt;<\/code><\/pre>\n<p><strong><span style=\"text-decoration: underline\">Step 3<\/span>:<\/strong> \u00a0We create a button in LoadSecondAddin with the caption\u00a0\u201cAdd-in 2 Button\u201d which we place in the LoadFirstAddin\u2019s \u201cAdd-in 1 Group\u201d using an <em>updateModule<\/em> section, referencing the module id and group id from LoadFirstAddin and use <em>insertButton<\/em> to reference the addition of our new button. Here\u2019s the DAML code:<\/p>\n<pre><code>\u00a0\u00a0\u00a0 &lt;modules&gt;\n\u00a0\u00a0\u00a0 &lt;insertModule id=\"LoadSecondAddin_Module\" className=\"Module1\" autoLoad=\"false\" caption=\"Module1\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;controls&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;button id=\"LoadSecondAddin_Button2\" caption=\"Add-in 2 Button\" className=\"Button2\" \n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 loadOnClick=\"true\" smallImage=\"ImagesGenericButtonBlue16.png\" \n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 largeImage=\"ImagesGenericButtonBlue32.png\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;tooltip heading=\"Tooltip Heading\"&gt;Tooltip text&lt;disabledText \/&gt;&lt;\/tooltip&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/button&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/controls&gt;\n\u00a0\u00a0\u00a0 &lt;\/insertModule&gt;\n\u00a0\u00a0\u00a0 &lt;updateModule <strong><span style=\"color: #ff0000\">refID=\"LoadFirstAddIn_Module\"<\/span><\/strong>&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;groups&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;updateGroup <strong><span style=\"color: #ff0000\">refID=\"LoadFirstAddIn_Group1\"<\/span><\/strong>&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;insertButton refID=\"LoadSecondAddin_Button2\"&gt;&lt;\/insertButton&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/updateGroup&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/groups&gt;\n\u00a0\u00a0\u00a0 &lt;\/updateModule&gt;\n\u00a0 &lt;\/modules&gt;\n&lt;\/ArcGIS&gt;<\/code><\/pre>\n<p><strong><span style=\"text-decoration: underline\">Step 4<\/span>:<\/strong>\u00a0 We build and run Pro, and click on the &#8220;Loading Test&#8221; tab defined by LoadFirstAddin. We see that the button from LoadSecondAddin has updated the \u201cAdd-in 1 Group\u201d and has been inserted next to the \u201cAdd-in 1 Button\u201d. \u00a0With a click, we can see LoadSecondAddin&#8217;s button is working:<\/p>\n<p><a href=\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2017\/08\/ArcGIS-Pro-SDK-Second-Add-In-Dialog.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-84585\" src=\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2017\/08\/ArcGIS-Pro-SDK-Second-Add-In-Dialog.jpg\" alt=\"\" width=\"641\" height=\"282\" \/><\/a><\/p>\n<p>For essential information on working with DAML in the Pro SDK, see the <a href=\"https:\/\/github.com\/esri\/arcgis-pro-sdk\/wiki\/ProConcepts-Framework#introduction-to-daml-desktop-application-markup-language\">ProConcepts Framework<\/a> document.<\/p>\n"}],"authors":[{"ID":6271,"user_firstname":"Christopher","user_lastname":"Zent","nickname":"chriszent","user_nicename":"chriszent","display_name":"Christopher Zent","user_email":"czent@esri.com","user_url":"","user_registered":"2018-03-02 00:18:09","user_description":"Chris is a product manager on the ArcGIS Desktop Team, focused on the ArcGIS Pro SDK and helping users achieve their Pro customization goals.","user_avatar":"<img data-del=\"avatar\" src='https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/01\/ArcGIS-Pro-Extensibility-1920x1080-Switzerland-213x200.jpg' class='avatar pp-user-avatar avatar-96 photo ' height='96' width='96'\/>"}]},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Manage ArcGIS Pro Add-In Loading<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/\/uncategorized\/manage-arcgis-pro-add-in-loading\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Manage ArcGIS Pro Add-In Loading\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/\/uncategorized\/manage-arcgis-pro-add-in-loading\" \/>\n<meta property=\"og:site_name\" content=\"ArcGIS Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/esrigis\/\" \/>\n<meta property=\"article:modified_time\" content=\"2018-03-26T21:14:11+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@ESRI\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/\/uncategorized\/manage-arcgis-pro-add-in-loading#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/\/uncategorized\/manage-arcgis-pro-add-in-loading\"},\"author\":{\"name\":\"Christopher Zent\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/0cf6cfa13d415d40bb6f89b6082c496a\"},\"headline\":\"Manage ArcGIS Pro Add-In Loading\",\"datePublished\":\"2017-08-04T08:00:56+00:00\",\"dateModified\":\"2018-03-26T21:14:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/\/uncategorized\/manage-arcgis-pro-add-in-loading\"},\"wordCount\":5,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"keywords\":[\"ArcGIS Pro add-ins\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/\/uncategorized\/manage-arcgis-pro-add-in-loading#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/\/uncategorized\/manage-arcgis-pro-add-in-loading\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/\/uncategorized\/manage-arcgis-pro-add-in-loading\",\"name\":\"Manage ArcGIS Pro Add-In Loading\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2017-08-04T08:00:56+00:00\",\"dateModified\":\"2018-03-26T21:14:11+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/\/uncategorized\/manage-arcgis-pro-add-in-loading#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/\/uncategorized\/manage-arcgis-pro-add-in-loading\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/\/uncategorized\/manage-arcgis-pro-add-in-loading#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Manage ArcGIS Pro Add-In Loading\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"name\":\"ArcGIS Blog\",\"description\":\"Get insider info from Esri product teams\",\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\",\"name\":\"Esri\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"width\":400,\"height\":400,\"caption\":\"Esri\"},\"image\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/esrigis\/\",\"https:\/\/x.com\/ESRI\",\"https:\/\/www.linkedin.com\/company\/5311\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/0cf6cfa13d415d40bb6f89b6082c496a\",\"name\":\"Christopher Zent\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/01\/ArcGIS-Pro-Extensibility-1920x1080-Switzerland-213x200.jpg\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/01\/ArcGIS-Pro-Extensibility-1920x1080-Switzerland-213x200.jpg\",\"caption\":\"Christopher Zent\"},\"description\":\"Chris is a product manager on the ArcGIS Desktop Team, focused on the ArcGIS Pro SDK and helping users achieve their Pro customization goals.\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/author\/chriszent\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Manage ArcGIS Pro Add-In Loading","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.esri.com\/arcgis-blog\/products\/\/uncategorized\/manage-arcgis-pro-add-in-loading","og_locale":"en_US","og_type":"article","og_title":"Manage ArcGIS Pro Add-In Loading","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/\/uncategorized\/manage-arcgis-pro-add-in-loading","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","article_modified_time":"2018-03-26T21:14:11+00:00","twitter_card":"summary_large_image","twitter_site":"@ESRI","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/\/uncategorized\/manage-arcgis-pro-add-in-loading#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/\/uncategorized\/manage-arcgis-pro-add-in-loading"},"author":{"name":"Christopher Zent","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/0cf6cfa13d415d40bb6f89b6082c496a"},"headline":"Manage ArcGIS Pro Add-In Loading","datePublished":"2017-08-04T08:00:56+00:00","dateModified":"2018-03-26T21:14:11+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/\/uncategorized\/manage-arcgis-pro-add-in-loading"},"wordCount":5,"commentCount":0,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"keywords":["ArcGIS Pro add-ins"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/\/uncategorized\/manage-arcgis-pro-add-in-loading#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/\/uncategorized\/manage-arcgis-pro-add-in-loading","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/\/uncategorized\/manage-arcgis-pro-add-in-loading","name":"Manage ArcGIS Pro Add-In Loading","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2017-08-04T08:00:56+00:00","dateModified":"2018-03-26T21:14:11+00:00","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/\/uncategorized\/manage-arcgis-pro-add-in-loading#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/\/uncategorized\/manage-arcgis-pro-add-in-loading"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/\/uncategorized\/manage-arcgis-pro-add-in-loading#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"Manage ArcGIS Pro Add-In Loading"}]},{"@type":"WebSite","@id":"https:\/\/www.esri.com\/arcgis-blog\/#website","url":"https:\/\/www.esri.com\/arcgis-blog\/","name":"ArcGIS Blog","description":"Get insider info from Esri product teams","publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization","name":"Esri","url":"https:\/\/www.esri.com\/arcgis-blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","width":400,"height":400,"caption":"Esri"},"image":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/esrigis\/","https:\/\/x.com\/ESRI","https:\/\/www.linkedin.com\/company\/5311\/"]},{"@type":"Person","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/0cf6cfa13d415d40bb6f89b6082c496a","name":"Christopher Zent","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/","url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/01\/ArcGIS-Pro-Extensibility-1920x1080-Switzerland-213x200.jpg","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/01\/ArcGIS-Pro-Extensibility-1920x1080-Switzerland-213x200.jpg","caption":"Christopher Zent"},"description":"Chris is a product manager on the ArcGIS Desktop Team, focused on the ArcGIS Pro SDK and helping users achieve their Pro customization goals.","url":"https:\/\/www.esri.com\/arcgis-blog\/author\/chriszent"}]}},"text_date":"August 4, 2017","author_name":"Christopher Zent","author_page":"https:\/\/www.esri.com\/arcgis-blog\/author\/chriszent","custom_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/Newsroom-Keyart-Wide-1920-x-1080.jpg","primary_product":"ArcGIS Pro","tag_data":[{"term_id":33041,"name":"ArcGIS Pro add-ins","slug":"pro-add-ins","term_group":0,"term_taxonomy_id":33041,"taxonomy":"post_tag","description":"","parent":0,"count":7,"filter":"raw"}],"category_data":[],"product_data":[{"term_id":36561,"name":"ArcGIS Pro","slug":"arcgis-pro","term_group":0,"term_taxonomy_id":36561,"taxonomy":"product","description":"","parent":0,"count":2035,"filter":"raw"},{"term_id":36851,"name":"ArcGIS Pro SDK","slug":"arcgis-pro-net","term_group":0,"term_taxonomy_id":36851,"taxonomy":"product","description":"","parent":36601,"count":91,"filter":"raw"},{"term_id":36601,"name":"Developers","slug":"developers","term_group":0,"term_taxonomy_id":36601,"taxonomy":"product","description":"","parent":0,"count":761,"filter":"raw"}],"primary_product_link":"https:\/\/www.esri.com\/arcgis-blog\/?s=#&products=arcgis-pro","_links":{"self":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/78821","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/users\/6271"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/comments?post=78821"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/78821\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=78821"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=78821"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=78821"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=78821"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=78821"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}