{"id":1268382,"date":"2021-08-17T07:30:02","date_gmt":"2021-08-17T14:30:02","guid":{"rendered":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=1268382"},"modified":"2021-11-09T13:42:40","modified_gmt":"2021-11-09T21:42:40","slug":"publish-and-overwrite-web-layers-in-modelbuilder","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/publish-and-overwrite-web-layers-in-modelbuilder","title":{"rendered":"Publish and overwrite web layers in ModelBuilder"},"author":81122,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"_searchwp_excluded":""},"categories":[23851,22941],"tags":[24331,761652,33691,24341,24801],"industry":[],"product":[36561],"class_list":["post-1268382","blog","type-blog","status-publish","format-standard","hentry","category-data-management","category-mapping","tag-modelbuilder","tag-overwrite","tag-publish","tag-python","tag-sharing","product-arcgis-pro"],"acf":{"short_description":"Learn how to publish and overwrite web layers in ModelBuilder by creating a script tool in ArcGIS Pro.","flexible_content":[{"acf_fc_layout":"content","content":"<p>As we continue the fight against COVID-19 and enter the wildfire and hurricane season, web applications like dashboards help people make informed, time-sensitive, and even life-saving decisions. Depending on the events your organization is monitoring, things can change rapidly. You\u2019ll need to efficiently publish your web layers, update your data, and overwrite your web layers to keep your dashboards current and relevant.<\/p>\n<p><a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/help\/analysis\/geoprocessing\/modelbuilder\/what-is-modelbuilder-.htm\">ModelBuilder<\/a> in ArcGIS Pro allows you to automate analyzing and updating the data used in your web layers. You may already have a model you routinely run to prepare your data for publishing. All that remains is the ability to publish web layers or overwrite existing ones in the model. In this article, you\u2019ll learn how to <a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/help\/analysis\/geoprocessing\/basics\/create-a-python-script-tool.htm\">create a script tool<\/a> in ArcGIS Pro 2.8 that <a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/help\/sharing\/overview\/web-feature-layer.htm\">publishes<\/a> or <a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/help\/sharing\/overview\/overwrite-a-web-layer.htm\">overwrites a web feature layer<\/a>. The script tool is built on ArcPy functions and geoprocessing tools, allowing you to run it like any other geoprocessing tool in new or existing ModelBuilder models.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":1323832,"id":1323832,"title":"model_scripttool","filename":"model_scripttool-1.png","filesize":153240,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/model_scripttool-1.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/publish-and-overwrite-web-layers-in-modelbuilder\/model_scripttool-2","alt":"Use a custom publishing script tool in ModelBuilder","author":"81122","description":"","caption":"","name":"model_scripttool-2","status":"inherit","uploaded_to":1268382,"date":"2021-08-13 21:34:54","modified":"2021-08-13 21:35:19","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":1919,"height":1079,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/model_scripttool-1-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/model_scripttool-1.png","medium-width":464,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/model_scripttool-1.png","medium_large-width":768,"medium_large-height":432,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/model_scripttool-1.png","large-width":1919,"large-height":1079,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/model_scripttool-1-1536x864.png","1536x1536-width":1536,"1536x1536-height":864,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/model_scripttool-1.png","2048x2048-width":1919,"2048x2048-height":1079,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/model_scripttool-1-826x465.png","card_image-width":826,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/model_scripttool-1.png","wide_image-width":1919,"wide_image-height":1079}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>You\u2019ll be guided through each of the four steps below:<\/p>\n<ol>\n<li>Write a Python script. (Not too familiar with Python? Don\u2019t worry; a sample script is provided that you can modify to meet your specific needs.)<\/li>\n<li>Create a script tool.<\/li>\n<li>Add the script tool to ModelBuilder.<\/li>\n<li>Run the model.<\/li>\n<\/ol>\n<p>If you want to view the completed script tool and see how it works in an existing model, download <a href=\"https:\/\/www.arcgis.com\/home\/item.html?id=c3d986828baf4862ab567c1d33951d66\">this project<\/a> to follow along.<\/p>\n<h3><strong>Step 1: Write a Python script<\/strong><\/h3>\n<p>The code below <a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/help\/sharing\/overview\/web-feature-layer.htm\">publishes a new web feature layer<\/a> or <a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/help\/sharing\/overview\/overwrite-a-web-layer.htm\">overwrites an<\/a> existing web feature layer in ArcGIS Online or ArcGIS Enterprise. Copy and paste the script in a text editor like Notepad and save it as a Python file (.py). This script can be modified to meet your specific needs. You\u2019ll learn how to do this under <strong>Next Steps<\/strong> at the end of this article. If you would like to learn more about this publishing script and others like it, see <a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/arcpy\/sharing\/introduction-to-arcpy-sharing.htm\">Introduction to arcpy.sharing<\/a>.<\/p>\n"},{"acf_fc_layout":"sidebar","content":"","image_reference":false,"layout":"code_snippet","image_reference_figure":"","snippet":"import arcpy\r\nimport os\r\nimport xml.dom.minidom as DOM\r\n\r\ndef ScriptTool(map, service, summary, tags, description, overwriteService, enableEditing, enableSync, enableWFS, timezone, share_public, share_organization, share_groups, outdir):\r\n    \"\"\"ScriptTool function docstring\"\"\"\r\n\r\n    # Set output file names\r\n    sddraft_filename = service + \".sddraft\"\r\n    sddraft_output_filename = os.path.join(outdir, sddraft_filename)\r\n\r\n    # Reference map to publish\r\n    aprx = arcpy.mp.ArcGISProject(\"CURRENT\")\r\n    m = aprx.listMaps(map)[0]\r\n\r\n    # Create FeatureSharingDraft and set service properties\r\n    sharing_draft = m.getWebLayerSharingDraft(\"HOSTING_SERVER\", \"FEATURE\", service)\r\n    sharing_draft.summary = summary\r\n    sharing_draft.tags = tags\r\n    sharing_draft.description = description\r\n    sharing_draft.credits = \"My Credits\"\r\n    sharing_draft.useLimitations = \"My Use Limitations\"\r\n    sharing_draft.overwriteExistingService = overwriteService\r\n\r\n    # Create Service Definition Draft file\r\n    sharing_draft.exportToSDDraft(sddraft_output_filename)\r\n    outsddraft = sddraft_output_filename\r\n    arcpy.AddMessage(\"Service definition draft created\")\r\n\r\n    # Modify capabilities\r\n    if enableEditing or enableSync:\r\n        ModifyCapabilities(sddraft_output_filename, enableEditing, enableSync)\r\n    if enableWFS:\r\n        EnableWFS(sddraft_output_filename)\r\n    \r\n    # Set time zone\r\n    if(timezone != \"\"):\r\n        property_set = [{\r\n            \"key\": \"dateFieldsRespectsDayLightSavingTime\",\r\n            \"value\": \"true\"\r\n        },\r\n            {\r\n                \"key\": \"dateFieldsTimezoneID\",\r\n                \"value\": timezone\r\n            }]\r\n        SetTimezone(sddraft_output_filename, property_set=property_set)\r\n\r\n    # Create Service Definition file\r\n    sd_filename = service + \".sd\"\r\n    sd_output_filename = os.path.join(outdir, sd_filename)\r\n    arcpy.StageService_server(sddraft_output_filename, sd_output_filename)\r\n    arcpy.AddMessage(\"Service definition created\")\r\n\r\n    # Upload to portal\r\n    output = arcpy.UploadServiceDefinition_server(sd_output_filename, \"My Hosted Services\", in_override=\"OVERRIDE_DEFINITION\", in_public=share_public, in_organization=share_organization, in_groups=share_groups)\r\n    arcpy.AddMessage(\"Service published\")\r\n\r\n    return output[5]\r\n\r\ndef ModifyCapabilities(sddraft_output_filename, enableEditing, enableSync):\r\n    capabilities = \"Query\"\r\n    if enableEditing:\r\n        capabilities += \",Create,Delete,Update,Editing\"\r\n    if enableSync:\r\n        capabilities += \",Sync\"\r\n    # Modify feature layer capabilities to enable Create and Sync\r\n    doc = DOM.parse(sddraft_output_filename)\r\n    typeNames = doc.getElementsByTagName('TypeName')\r\n    for typeName in typeNames:\r\n        if typeName.firstChild.data == \"FeatureServer\":\r\n            extension = typeName.parentNode\r\n            for extElement in extension.childNodes:\r\n                if extElement.tagName == 'Definition':\r\n                    for propArray in extElement.childNodes:\r\n                        if propArray.tagName == 'Info':\r\n                            for propSet in propArray.childNodes:\r\n                                for prop in propSet.childNodes:\r\n                                    for prop1 in prop.childNodes:\r\n                                        if prop1.tagName == \"Key\":\r\n                                            if prop1.firstChild.data == 'webCapabilities':\r\n                                                if prop1.nextSibling.hasChildNodes():\r\n                                                    prop1.nextSibling.firstChild.data = capabilities\r\n                                                else:\r\n                                                    txt = doc.createTextNode(capabilities)\r\n                                                    prop1.nextSibling.appendChild(txt)\r\n    # Write to the .sddraft file\r\n    f = open(sddraft_output_filename, 'w')\r\n    doc.writexml(f)\r\n    f.close()\r\n    arcpy.AddMessage(\"Capabilities updated\")\r\n    return\r\n\r\ndef EnableWFS(sddraft_output_filename):\r\n    doc = DOM.parse(sddraft_output_filename)\r\n    typeNames = doc.getElementsByTagName('TypeName')\r\n    for typeName in typeNames:\r\n        # Get the TypeName to enable\r\n        if typeName.firstChild.data == \"EnableWFSServer\":\r\n            extension = typeName.parentNode\r\n            for extElement in extension.childNodes:\r\n                # Enable feature access\r\n                if extElement.tagName == 'Enabled':\r\n                    extElement.firstChild.data = 'true'\r\n    # Write to the .sddraft file\r\n    f = open(sddraft_output_filename, 'w')\r\n    doc.writexml(f)\r\n    f.close()\r\n    arcpy.AddMessage(\"WFS set\")\r\n    return\r\n\r\ndef SetTimezone(sddraftPath, property_set):\r\n    # Read the sddraft xml\r\n    doc = DOM.parse(sddraftPath)\r\n\r\n    # Find all elements named TypeName. This is where the server object extension\r\n    # (SOE) names are defined.\r\n    typeNames = doc.getElementsByTagName('TypeName')\r\n    for typeName in typeNames:\r\n        # Get the TypeName to enable\r\n        if typeName.firstChild.data == \"MapServer\":\r\n            extension = typeName.parentNode\r\n            # prp = extension.childNodes.getElementsByTagNameNS('PropertyArray')\r\n            for extElement in extension.childNodes:\r\n                if extElement.tagName == 'Definition':\r\n                    for definition in extElement.childNodes:\r\n                        if definition.tagName == 'ConfigurationProperties':\r\n                            for config_prop in definition.childNodes:\r\n                                if config_prop.tagName == 'PropertyArray':\r\n                                    for prop in property_set:\r\n                                        prop_set = doc.createElement(\"PropertySetProperty\")\r\n                                        attr = doc.createAttribute(\"xsi:type\")\r\n                                        attr.value = \"typens:PropertySetProperty\"\r\n                                        prop_set.setAttributeNode(attr)\r\n\r\n                                        prop_key = doc.createElement(\"Key\")\r\n                                        txt = doc.createTextNode(prop[\"key\"])\r\n                                        prop_key.appendChild(txt)\r\n                                        prop_set.appendChild(prop_key)\r\n\r\n                                        prop_value = doc.createElement(\"Value\")\r\n                                        attr = doc.createAttribute(\"xsi:type\")\r\n                                        attr.value = \"xs:string\"\r\n                                        prop_value.setAttributeNode(attr)\r\n                                        txt = doc.createTextNode(prop[\"value\"])\r\n                                        prop_value.appendChild(txt)\r\n                                        prop_set.appendChild(prop_value)\r\n\r\n                                        config_prop.appendChild(prop_set)\r\n\r\n    # Write to the .sddraft file\r\n    f = open(sddraftPath, 'w')\r\n    doc.writexml(f)\r\n    f.close()\r\n    arcpy.AddMessage(\"Timezone set\")\r\n    return\r\n\r\nif __name__ == '__main__':\r\n    # ScriptTool parameters\r\n    map = arcpy.GetParameter(0)\r\n    service = arcpy.GetParameterAsText(1)\r\n    summary = arcpy.GetParameterAsText(2)\r\n    tags = arcpy.GetParameterAsText(3)\r\n    description = arcpy.GetParameterAsText(4)\r\n    overwriteService = arcpy.GetParameter(5)\r\n    enableEditing = arcpy.GetParameter(6)\r\n    enableSync = arcpy.GetParameter(7)\r\n    enableWFS = arcpy.GetParameter(8)\r\n    timezone = arcpy.GetParameterAsText(9)\r\n    share_public = arcpy.GetParameterAsText(10)\r\n    share_organization = arcpy.GetParameterAsText(11)\r\n    share_groups = arcpy.GetParameterAsText(12)\r\n    outdir = arcpy.GetParameterAsText(13)\r\n    \r\n    rest_endpoint = ScriptTool(map, service, summary, tags, description, overwriteService, enableEditing, enableSync, enableWFS, timezone, share_public, share_organization, share_groups, outdir)\r\n    arcpy.SetParameterAsText(1, rest_endpoint)\r\n    arcpy.AddMessage(rest_endpoint)","spotlight_name":"","section_title":"","position":"Center","spotlight_image":false},{"acf_fc_layout":"content","content":"<h3><strong>Step 2: Create a script tool<\/strong><\/h3>\n<p>Next, follow all three sections below to create a script tool.<\/p>\n<p><u>Create a custom toolbox to store your tool<\/u><\/p>\n<p>1. Open your ArcGIS Pro project. In the <strong>Catalog <\/strong>pane, right-click <strong>Toolboxes <\/strong>and click <strong>New Toolbox<\/strong>.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":1323852,"id":1323852,"title":"newtoolbox_resize","filename":"newtoolbox_resize.png","filesize":20925,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/newtoolbox_resize.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/publish-and-overwrite-web-layers-in-modelbuilder\/newtoolbox_resize","alt":"Create a new toolbox","author":"81122","description":"","caption":"","name":"newtoolbox_resize","status":"inherit","uploaded_to":1268382,"date":"2021-08-13 21:46:16","modified":"2021-08-13 21:46:23","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":369,"height":259,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/newtoolbox_resize-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/newtoolbox_resize.png","medium-width":369,"medium-height":259,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/newtoolbox_resize.png","medium_large-width":369,"medium_large-height":259,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/newtoolbox_resize.png","large-width":369,"large-height":259,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/newtoolbox_resize.png","1536x1536-width":369,"1536x1536-height":259,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/newtoolbox_resize.png","2048x2048-width":369,"2048x2048-height":259,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/newtoolbox_resize.png","card_image-width":369,"card_image-height":259,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/newtoolbox_resize.png","wide_image-width":369,"wide_image-height":259}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>2. On the <strong>New Toolbox<\/strong> dialog box, provide a name for your toolbox and click <strong>Save<\/strong>.<\/p>\n<p><u>Import the Python script<\/u><\/p>\n<ol>\n<li>In the <strong>Catalog <\/strong>pane, right-click the new toolbox you just created, and select <strong>New &gt; Script<\/strong>.<\/li>\n<li>On the <strong>New Script <\/strong>dialog box, under <strong>General<\/strong>, provide the following:<br \/>\n<strong>Name: <\/strong>PublishWebFeatureLayer<br \/>\n<strong>Label: <\/strong>Publish Web Feature Layer<\/li>\n<\/ol>\n<ol start=\"3\">\n<li>Browse to the location of the Python script file you saved earlier. Select the file and click <strong>OK<\/strong>.<\/li>\n<li>Check <strong>Import script<\/strong>.<\/li>\n<li>Leave the <strong>Tool Properties<\/strong> dialog box open for the next section.<\/li>\n<\/ol>\n"},{"acf_fc_layout":"image","image":{"ID":1323272,"id":1323272,"title":"scripttoolgeneral","filename":"scripttoolgeneral.png","filesize":21368,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/scripttoolgeneral.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/publish-and-overwrite-web-layers-in-modelbuilder\/scripttoolgeneral","alt":"Script tool properties","author":"81122","description":"","caption":"","name":"scripttoolgeneral","status":"inherit","uploaded_to":1268382,"date":"2021-08-13 16:41:42","modified":"2021-08-13 16:41:51","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":1200,"height":600,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/scripttoolgeneral-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/scripttoolgeneral.png","medium-width":464,"medium-height":232,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/scripttoolgeneral.png","medium_large-width":768,"medium_large-height":384,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/scripttoolgeneral.png","large-width":1200,"large-height":600,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/scripttoolgeneral.png","1536x1536-width":1200,"1536x1536-height":600,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/scripttoolgeneral.png","2048x2048-width":1200,"2048x2048-height":600,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/scripttoolgeneral-826x413.png","card_image-width":826,"card_image-height":413,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/scripttoolgeneral.png","wide_image-width":1200,"wide_image-height":600}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p><u>Define the parameters of your script tool<\/u><\/p>\n<p><a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/arcpy\/geoprocessing_and_python\/understanding-script-tool-parameters.htm\">Parameters<\/a> are variables that serve as inputs for your script tool. When you run the tool, the Python script reads the parameter values before executing the rest of the script.<\/p>\n<p>Under <strong>Parameters<\/strong>, add the following parameters with their properties:<\/p>\n<p><strong>Note:<\/strong> These properties can be modified based on your preferences. (For example, you can change the <strong>Share With Organization<\/strong> parameter so that it defaults to SHARE_ORGANIZATION instead of NO_SHARE_ORGANIZATION.)<\/p>\n<p>0. <strong>Label<\/strong>: Map<br \/>\n<strong>\u00a0 \u00a0 Name<\/strong>: in_map<br \/>\n<strong>\u00a0 \u00a0 Data Type<\/strong>: Map<br \/>\n<strong>\u00a0 \u00a0 Type<\/strong>: Required<br \/>\n<strong>\u00a0 \u00a0 Direction<\/strong>: Input<\/p>\n<p>1. <strong>Label<\/strong>: Web Layer Name<br \/>\n<strong>\u00a0 \u00a0 Name<\/strong>: service<br \/>\n<strong>\u00a0 \u00a0 Data Type<\/strong>: String<br \/>\n<strong>\u00a0 \u00a0 Type<\/strong>: Required<br \/>\n<strong>\u00a0 \u00a0 Direction<\/strong>: Input<\/p>\n<p>2. <strong>Label<\/strong>: Summary<br \/>\n<strong>\u00a0 \u00a0 Name<\/strong>: summary<br \/>\n<strong>\u00a0 \u00a0 Data Type<\/strong>: String<br \/>\n<strong>\u00a0 \u00a0 Type<\/strong>: Optional<br \/>\n<strong>\u00a0 \u00a0 Direction<\/strong>: Input<\/p>\n<p>3.<strong> Label<\/strong>: Tags<br \/>\n<strong>\u00a0 \u00a0 Name<\/strong>: tags<br \/>\n<strong>\u00a0 \u00a0 Data Type<\/strong>: String<br \/>\n<strong>\u00a0 \u00a0 Type<\/strong>: Optional<br \/>\n<strong>\u00a0 \u00a0 Direction<\/strong>: Input<\/p>\n<p>4.<strong> Label<\/strong>: Description<br \/>\n<strong>\u00a0 \u00a0 Name<\/strong>: description<br \/>\n<strong>\u00a0 \u00a0 Data Type<\/strong>: String<br \/>\n<strong>\u00a0 \u00a0 Type<\/strong>: Optional<br \/>\n<strong>\u00a0 \u00a0 Direction<\/strong>: Input<\/p>\n<p>5.<strong> Label<\/strong>: Overwrite Existing Web Layer<br \/>\n<strong>\u00a0 \u00a0 Name<\/strong>: overwrite_existing_service<br \/>\n<strong>\u00a0 \u00a0 Data Type<\/strong>: Boolean<br \/>\n<strong>\u00a0 \u00a0 Type<\/strong>: Optional<br \/>\n<strong>\u00a0 \u00a0 Direction<\/strong>: Input<\/p>\n<p>6. <strong>Label<\/strong>: Enable Editing<br \/>\n<strong>\u00a0 \u00a0 Name<\/strong>: enableEditing<br \/>\n<strong>\u00a0 \u00a0 Data Type<\/strong>: Boolean<br \/>\n<strong>\u00a0 \u00a0 Type<\/strong>: Optional<br \/>\n<strong>\u00a0 \u00a0 Direction<\/strong>: Input<br \/>\n<strong>\u00a0 \u00a0 Category<\/strong>: Configuration<\/p>\n<p>7. <strong>Label<\/strong>: Enable Sync<br \/>\n<strong>\u00a0 \u00a0 Name<\/strong>: enableSync<br \/>\n<strong>\u00a0 \u00a0 Data Type<\/strong>: Boolean<br \/>\n<strong>\u00a0 \u00a0 Type<\/strong>: Optional<br \/>\n<strong>\u00a0 \u00a0 Direction<\/strong>: Input<br \/>\n<strong>\u00a0 \u00a0 Category<\/strong>: Configuration<\/p>\n<p>8. <strong>Label<\/strong>: Enable WFS<br \/>\n<strong>\u00a0 \u00a0 Name<\/strong>: enableWFS<br \/>\n<strong>\u00a0 \u00a0 Data Type<\/strong>: Boolean<br \/>\n<strong>\u00a0 \u00a0 Type<\/strong>: Optional<br \/>\n<strong>\u00a0 \u00a0 Direction<\/strong>: Input<br \/>\n<strong>\u00a0 \u00a0 Category<\/strong>: Configuration<\/p>\n<p>9. <strong>Label<\/strong>: Time zone<br \/>\n<strong>\u00a0 \u00a0 Name<\/strong>: timezone<br \/>\n<strong>\u00a0 \u00a0 Data Type<\/strong>: String<br \/>\n<strong>\u00a0 \u00a0 Type<\/strong>: Optional<br \/>\n<strong>\u00a0 \u00a0 Direction<\/strong>: Input<br \/>\n<strong>\u00a0 \u00a0 Category<\/strong>: Configuration<\/p>\n<p>10. <strong>Label<\/strong>: Share With Everyone<br \/>\n<strong>\u00a0 \u00a0 \u00a0 Name<\/strong>: share_public<br \/>\n<strong>\u00a0 \u00a0 \u00a0 Data Type<\/strong>: String<br \/>\n<strong>\u00a0 \u00a0 \u00a0 Type<\/strong>: Optional<br \/>\n<strong>\u00a0 \u00a0 \u00a0 Direction<\/strong>: Input<br \/>\n<strong>\u00a0 \u00a0 \u00a0 Category<\/strong>: Share with<br \/>\n<strong>\u00a0 \u00a0 \u00a0 Filter<\/strong>: Value List<br \/>\n<strong>\u00a0 \u00a0 \u00a0<\/strong><strong>\u00a0 \u00a0 \u00a0<\/strong><strong>\u00a0 \u00a0 \u00a0<\/strong><strong>\u00a0 \u00a0 <\/strong>PUBLIC<br \/>\n<strong>\u00a0 \u00a0 \u00a0<\/strong><strong>\u00a0 \u00a0 \u00a0<\/strong><strong>\u00a0 \u00a0 \u00a0<\/strong><strong>\u00a0 \u00a0 <\/strong>PRIVATE<br \/>\n<strong>\u00a0 \u00a0 \u00a0 Default<\/strong>: PRIVATE<\/p>\n<p>11. <strong>Label<\/strong>: Share With Organization<br \/>\n<strong>\u00a0 \u00a0 \u00a0 Name<\/strong>: share_organization<br \/>\n<strong>\u00a0 \u00a0 \u00a0 Data Type<\/strong>: String<br \/>\n<strong>\u00a0 \u00a0 \u00a0 Type<\/strong>: Optional<br \/>\n<strong>\u00a0 \u00a0 \u00a0 Direction<\/strong>: Input<br \/>\n<strong>\u00a0 \u00a0 \u00a0 Category<\/strong>: Share with<br \/>\n<strong>\u00a0 \u00a0 \u00a0 Filter<\/strong>: Value List<br \/>\n<strong>\u00a0 \u00a0 \u00a0<\/strong><strong>\u00a0 \u00a0 \u00a0<\/strong><strong>\u00a0 \u00a0 \u00a0<\/strong><strong>\u00a0 \u00a0 <\/strong>SHARE_ORGANIZATION<br \/>\n<strong>\u00a0 \u00a0 \u00a0<\/strong><strong>\u00a0 \u00a0 \u00a0<\/strong><strong>\u00a0 \u00a0 \u00a0<\/strong><strong>\u00a0 \u00a0 <\/strong>NO_SHARE_ORGANIZATION<br \/>\n<strong>\u00a0 \u00a0 \u00a0 Default<\/strong>: NO_SHARE_ORGANIZATION<\/p>\n<p>12. <strong>Label<\/strong>: Share With Groups<br \/>\n<strong>\u00a0 \u00a0 \u00a0 Name<\/strong>: share_groups<br \/>\n<strong>\u00a0 \u00a0 \u00a0 Data Type<\/strong>: String<br \/>\n<strong>\u00a0 \u00a0 \u00a0 Type<\/strong>: Optional<br \/>\n<strong>\u00a0 \u00a0 \u00a0 Direction<\/strong>: Input<br \/>\n<strong>\u00a0 \u00a0 \u00a0 Category<\/strong>: Share with<\/p>\n<p>13. <strong>Label<\/strong>: Output Directory<br \/>\n<strong>\u00a0 \u00a0 \u00a0 Name<\/strong>: sddraft_output_directory<br \/>\n<strong>\u00a0 \u00a0 \u00a0 Data Type<\/strong>: Folder<br \/>\n<strong>\u00a0 \u00a0 \u00a0 Type<\/strong>: Required<br \/>\n<strong>\u00a0 \u00a0 \u00a0 Direction<\/strong>: Input<br \/>\n<strong>\u00a0 \u00a0 \u00a0 Category<\/strong>: Output<\/p>\n<p>14. <strong>Label<\/strong>: Rest Endpoint<br \/>\n<strong>\u00a0 \u00a0 \u00a0 Name<\/strong>: Rest_Endpoint<br \/>\n<strong>\u00a0 \u00a0 \u00a0 Data Type<\/strong>: String<br \/>\n<strong>\u00a0 \u00a0 \u00a0 Type<\/strong>: Derived<br \/>\n<strong>\u00a0 \u00a0 \u00a0 Direction<\/strong>: Output<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":1323732,"id":1323732,"title":"","filename":"scripttoolparameters-2-1-e1628889136796.png","filesize":54203,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/scripttoolparameters-2-1-e1628889136796.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/publish-and-overwrite-web-layers-in-modelbuilder\/scripttoolparameters-2-2","alt":"Script tool parameters","author":"81122","description":"","caption":"","name":"scripttoolparameters-2-2","status":"inherit","uploaded_to":1268382,"date":"2021-08-13 21:07:38","modified":"2021-08-13 21:07:47","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":1463,"height":658,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/scripttoolparameters-2-1-e1628889136796-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/scripttoolparameters-2-1-e1628889136796-464x209.png","medium-width":464,"medium-height":209,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/scripttoolparameters-2-1-e1628889136796-768x345.png","medium_large-width":768,"medium_large-height":345,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/scripttoolparameters-2-1-e1628889136796.png","large-width":1463,"large-height":658,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/scripttoolparameters-2-1-e1628889136796.png","1536x1536-width":1463,"1536x1536-height":658,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/scripttoolparameters-2-1-e1628889136796.png","2048x2048-width":1463,"2048x2048-height":658,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/scripttoolparameters-2-1-e1628889136796-826x372.png","card_image-width":826,"card_image-height":372,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/scripttoolparameters-2-1-e1628889136796.png","wide_image-width":1463,"wide_image-height":658}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>Now that you\u2019ve imported your script and set parameters for your tool, click <strong>OK<\/strong> on the <strong>Tool Properties <\/strong>dialog box.<\/p>\n<p><a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/arcpy\/geoprocessing_and_python\/setting-script-tool-parameters.htm\">Learn more about setting script tool parameters<\/a><\/p>\n<p>Let\u2019s examine the script tool you created. Double-click your script tool to open it.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":1323682,"id":1323682,"title":"Publish Web Feature Layer_resized","filename":"Publish-Web-Feature-Layer_resized.png","filesize":41533,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/Publish-Web-Feature-Layer_resized.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/publish-and-overwrite-web-layers-in-modelbuilder\/publish-web-feature-layer_resized","alt":"Publish Web Feature Layer script tool","author":"81122","description":"","caption":"","name":"publish-web-feature-layer_resized","status":"inherit","uploaded_to":1268382,"date":"2021-08-13 20:59:47","modified":"2021-08-13 21:00:04","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":368,"height":750,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/Publish-Web-Feature-Layer_resized-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/Publish-Web-Feature-Layer_resized.png","medium-width":128,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/Publish-Web-Feature-Layer_resized.png","medium_large-width":368,"medium_large-height":750,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/Publish-Web-Feature-Layer_resized.png","large-width":368,"large-height":750,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/Publish-Web-Feature-Layer_resized.png","1536x1536-width":368,"1536x1536-height":750,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/Publish-Web-Feature-Layer_resized.png","2048x2048-width":368,"2048x2048-height":750,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/Publish-Web-Feature-Layer_resized-228x465.png","card_image-width":228,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/Publish-Web-Feature-Layer_resized.png","wide_image-width":368,"wide_image-height":750}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>Publish Web Feature Layer is now a <a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/help\/analysis\/geoprocessing\/basics\/use-a-custom-geoprocessing-tool.htm\">custom geoprocessing tool<\/a> that can be run like any other system geoprocessing tool. It\u2019s ready to be added to a model.<\/p>\n<p><u>Optional: Include metadata<\/u><\/p>\n<p>When creating a custom geoprocessing tool, it\u2019s recommended to <a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/help\/analysis\/geoprocessing\/basics\/document-a-custom-tool.htm\">include documentation<\/a> that helps others use your tool.<\/p>\n<p>Right-click your script and click <strong>Edit Metadata<\/strong>.<\/p>\n<p>Enter tags, summary, and usage. Under Syntax, fill out the fields below and click <strong>Save<\/strong>.<\/p>\n<p><strong>in_map: <\/strong><\/p>\n<p>Dialog Explanation: Map to publish.<\/p>\n<p>Scripting Explanation: Map object of the map to publish.<\/p>\n<p><strong>service: <\/strong><\/p>\n<p>Dialog Explanation: Enter the name of a new or existing web layer. If the name already exists, the web layer will be overwritten. Otherwise, a new web layer will be created.<\/p>\n<p>Scripting Explanation: A string that represents the service name.<\/p>\n<p><strong>summary: <\/strong><\/p>\n<p>Dialog Explanation: Enter a short summary of the web layer.<\/p>\n<p>Scripting Explanation: A string that represents summary.<\/p>\n<p><strong>tags: <\/strong><\/p>\n<p>Dialog Explanation: Enter keywords or terms that describe the web layer.<\/p>\n<p>Scripting Explanation: A string that represents tags, with different tags separated by comma.<\/p>\n<p><strong>description: <\/strong><\/p>\n<p>Dialog Explanation: Enter an in-depth description of the item.<\/p>\n<p>Scripting Explanation: A string that represents a description.<\/p>\n<p><strong>overwrite_existing_service: <\/strong><\/p>\n<p>Dialog Explanation: If checked and a web layer with the same name exists, it will be overwritten.<\/p>\n<p>Scripting Explanation: A Boolean that determines whether to overwrite an existing web layer.<\/p>\n<p><strong>enableEditing: <\/strong><\/p>\n<p>Dialog Explanation: Allow users to edit the web layer.<\/p>\n<p>Scripting Explanation: A Boolean that determines whether to enable editing.<\/p>\n<p><strong>enableSync: <\/strong><\/p>\n<p>Dialog Explanation: Disconnected editing with synchronization.<\/p>\n<p>Scripting Explanation: A Boolean that determines whether to enable sync.<\/p>\n<p><strong>enableWFS: <\/strong><\/p>\n<p>Dialog Explanation: Include a WFS layer.<\/p>\n<p>Scripting Explanation: A Boolean that determines whether to share a WFS layer as well.<\/p>\n<p><strong>timezone: <\/strong><\/p>\n<p>Dialog Explanation: Enter the time zone in which your date values are stored.<\/p>\n<p>Scripting Explanation: A string to set the time zone.<\/p>\n<p><strong>share_public: <\/strong><\/p>\n<p>Dialog Explanation: Share web layer with the public.<\/p>\n<p>Scripting Explanation: A string that determines if the layer is PUBLIC or PRIVATE.<\/p>\n<p><strong>share_organization: <\/strong><\/p>\n<p>Dialog Explanation: Share web layer with all authenticated users in your organization.<\/p>\n<p>Scripting Explanation: A string that determines whether the layer is shared to the organization.<\/p>\n<p><strong>share_groups:<\/strong><\/p>\n<p>Dialog Explanation: Share web layer with groups you belong to and its members.<\/p>\n<p>Scripting Explanation: List of existing groups that the layer is to be shared to.<\/p>\n<p><strong>sddraft_output_directory: <\/strong><\/p>\n<p>Dialog Explanation: The folder on disk where your .sddraft and .sd files will be stored.<\/p>\n<p>Scripting Explanation: Output directory to create .sddraft and .sd files.<\/p>\n<h3><strong>Step 3: <\/strong><strong>Add the script tool to ModelBuilder<\/strong><\/h3>\n<p>To use the tool in ModelBuilder, open an existing model or right-click the toolbox and select <strong>New &gt; Model <\/strong>to create a new model. Right-click the script in your toolbox and click <strong>Add To Model <\/strong>(or drag it into your model).<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":1323442,"id":1323442,"title":"model","filename":"model.png","filesize":85447,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/model.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/publish-and-overwrite-web-layers-in-modelbuilder\/model-4","alt":"Model with Publish Web Feature Layer as a custom geoprocessing tool","author":"81122","description":"","caption":"","name":"model-4","status":"inherit","uploaded_to":1268382,"date":"2021-08-13 18:35:22","modified":"2021-08-13 18:35:32","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":1775,"height":787,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/model-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/model.png","medium-width":464,"medium-height":206,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/model.png","medium_large-width":768,"medium_large-height":341,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/model.png","large-width":1775,"large-height":787,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/model-1536x681.png","1536x1536-width":1536,"1536x1536-height":681,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/model.png","2048x2048-width":1775,"2048x2048-height":787,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/model-826x366.png","card_image-width":826,"card_image-height":366,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/model.png","wide_image-width":1775,"wide_image-height":787}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>You can include other geoprocessing tools in your model. For example, you can set other processes as <a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/help\/analysis\/geoprocessing\/modelbuilder\/using-preconditions.htm\">preconditions<\/a> so that they execute before the web layer is overwritten. To learn more, see <a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/help\/analysis\/geoprocessing\/modelbuilder\/modelbuilder-quick-tour.htm\">Use ModelBuilder<\/a>.<\/p>\n"},{"acf_fc_layout":"content","content":"<h3><strong>Step <\/strong><strong>4<\/strong>: <strong>Run the model<\/strong><\/h3>\n<p>Double-click the tool and fill out the fields. To overwrite a web layer, provide the name of the existing web layer and check the <strong>Overwrite Existing Web Layer <\/strong>check box. If the name already exists, the web layer will be overwritten. Otherwise, a new web layer will be created. Before running it, <a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/help\/analysis\/geoprocessing\/modelbuilder\/validate-a-model.htm\">validate the model<\/a> to ensure that it will successfully run by clicking <strong>ModelBuilder &gt; Run &gt; Validate<\/strong>. Once the model has been validated, click <strong>Run<\/strong> to run the entire model. You can also <a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/help\/analysis\/geoprocessing\/modelbuilder\/scheduling-a-model-run.htm\">schedule a model<\/a> to run repeatedly or at a designated time.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":1323872,"id":1323872,"title":"run","filename":"run.png","filesize":7324,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/run.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/publish-and-overwrite-web-layers-in-modelbuilder\/run","alt":"Run the model","author":"81122","description":"","caption":"","name":"run","status":"inherit","uploaded_to":1268382,"date":"2021-08-13 21:51:42","modified":"2021-08-13 21:51:53","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":268,"height":140,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/run-213x140.png","thumbnail-width":213,"thumbnail-height":140,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/run.png","medium-width":268,"medium-height":140,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/run.png","medium_large-width":268,"medium_large-height":140,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/run.png","large-width":268,"large-height":140,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/run.png","1536x1536-width":268,"1536x1536-height":140,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/run.png","2048x2048-width":268,"2048x2048-height":140,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/run.png","card_image-width":268,"card_image-height":140,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/run.png","wide_image-width":268,"wide_image-height":140}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>After the model successfully runs, add the web layer to a map in ArcGIS Pro or open it in Map Viewer.<\/p>\n<h3><strong>Next steps<\/strong><\/h3>\n<p>In this article, you learned how to publish and overwrite web feature layers in ModelBuilder by creating and running a script tool in a model. One of the advantages of authoring your own script tool is that you can modify it to meet your specific needs. A couple of examples are provided below. If you want to learn more about automating sharing workflows in ArcGIS Pro, see <a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/arcpy\/sharing\/introduction-to-arcpy-sharing.htm\">Introduction to arcpy.sharing<\/a>.<\/p>\n<p>Let\u2019s suppose you want to publish your web feature layer to a portal folder and allow users to export the data. This can be done by adding the <a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/arcpy\/sharing\/featuresharingdraft-class.htm#GUID-F529AD9A-B0D9-477A-9464-BB61F5747323\">portalFolder and allowExporting properties<\/a> in the FeatureSharingDraft.<\/p>\n<p>Right-click the script tool in your toolbox and click <strong>Edit<\/strong>. Modify the Python file as shown below.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":1323892,"id":1323892,"title":"code1 (2)","filename":"code1-2.png","filesize":110704,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/code1-2.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/publish-and-overwrite-web-layers-in-modelbuilder\/code1-2","alt":"Modify the Python file to include portal and export properties","author":"81122","description":"","caption":"","name":"code1-2","status":"inherit","uploaded_to":1268382,"date":"2021-08-13 21:55:29","modified":"2021-08-13 21:55:41","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":1722,"height":844,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/code1-2-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/code1-2.png","medium-width":464,"medium-height":227,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/code1-2.png","medium_large-width":768,"medium_large-height":376,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/code1-2.png","large-width":1722,"large-height":844,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/code1-2-1536x753.png","1536x1536-width":1536,"1536x1536-height":753,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/code1-2.png","2048x2048-width":1722,"2048x2048-height":844,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/code1-2-826x405.png","card_image-width":826,"card_image-height":405,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/code1-2.png","wide_image-width":1722,"wide_image-height":844}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"image","image":{"ID":1323902,"id":1323902,"title":"code2 (2)","filename":"code2-2.png","filesize":94724,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/code2-2.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/publish-and-overwrite-web-layers-in-modelbuilder\/code2-2","alt":"Modify the Python file to include portal and export properties","author":"81122","description":"","caption":"","name":"code2-2","status":"inherit","uploaded_to":1268382,"date":"2021-08-13 21:55:51","modified":"2021-08-13 21:55:57","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":1775,"height":678,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/code2-2-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/code2-2.png","medium-width":464,"medium-height":177,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/code2-2.png","medium_large-width":768,"medium_large-height":293,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/code2-2.png","large-width":1775,"large-height":678,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/code2-2-1536x587.png","1536x1536-width":1536,"1536x1536-height":587,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/code2-2.png","2048x2048-width":1775,"2048x2048-height":678,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/code2-2-826x316.png","card_image-width":826,"card_image-height":316,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/code2-2.png","wide_image-width":1775,"wide_image-height":678}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>Save the file. Right-click the script tool and click <strong>Properties<\/strong>. Add two more script tool parameters (6 and 11) for the new properties.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":1323492,"id":1323492,"title":"scripttoolparametersmodified","filename":"scripttoolparametersmodified.png","filesize":22831,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/scripttoolparametersmodified.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/publish-and-overwrite-web-layers-in-modelbuilder\/scripttoolparametersmodified","alt":"Add the new parameters to the script tool","author":"81122","description":"","caption":"","name":"scripttoolparametersmodified","status":"inherit","uploaded_to":1268382,"date":"2021-08-13 18:41:09","modified":"2021-08-13 18:41:21","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":845,"height":344,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/scripttoolparametersmodified-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/scripttoolparametersmodified.png","medium-width":464,"medium-height":189,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/scripttoolparametersmodified.png","medium_large-width":768,"medium_large-height":313,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/scripttoolparametersmodified.png","large-width":845,"large-height":344,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/scripttoolparametersmodified.png","1536x1536-width":845,"1536x1536-height":344,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/scripttoolparametersmodified.png","2048x2048-width":845,"2048x2048-height":344,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/scripttoolparametersmodified-826x336.png","card_image-width":826,"card_image-height":336,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/scripttoolparametersmodified.png","wide_image-width":845,"wide_image-height":344}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>Using what you\u2019ve learned in the previous sections, you can create a script tool specific to map image layers. The code below <a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/help\/sharing\/overview\/map-image-layer.htm\">publishes<\/a> or <a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/help\/sharing\/overview\/overwrite-a-map-image-layer.htm\">overwrites a map image layer<\/a> on ArcGIS Enterprise. Follow the same steps discussed previously: save the code as a new Python file (.py), create a script tool, import the .py file, and define script tool parameters. Add the script tool to ModelBuilder and run the model when you have configured it to meet your needs.<\/p>\n"},{"acf_fc_layout":"sidebar","content":"","image_reference":false,"layout":"code_snippet","image_reference_figure":"","snippet":"import arcpy\r\nimport os\r\nimport xml.dom.minidom as DOM\r\n\r\ndef ScriptTool(map, service, summary, tags, description, overwriteService, portalFolder, timezone, federatedServerUrl, share_public, share_organization, share_groups, outdir):\r\n    \"\"\"ScriptTool function docstring\"\"\"\r\n\r\n    # Set output file names\r\n    sddraft_filename = service + \".sddraft\"\r\n    sddraft_output_filename = os.path.join(outdir, sddraft_filename)\r\n\r\n    # Reference map to publish\r\n    aprx = arcpy.mp.ArcGISProject(\"CURRENT\")\r\n    m = aprx.listMaps(map)[0]\r\n\r\n    # Create MapImageSharingDraft and set service properties\r\n    server_type = \"FEDERATED_SERVER\"\r\n    federated_server_url = federatedServerUrl\r\n    sharing_draft = m.getWebLayerSharingDraft(server_type, \"MAP_IMAGE\", service)\r\n    sharing_draft.federatedServerUrl = federated_server_url\r\n    sharing_draft.summary = summary\r\n    sharing_draft.tags = tags\r\n    sharing_draft.description = description\r\n    sharing_draft.credits = \"My Credits\"\r\n    sharing_draft.useLimitations = \"My Use Limitations\"\r\n    sharing_draft.overwriteExistingService = overwriteService\r\n    sharing_draft.portalFolder = portalFolder\r\n\r\n    # Create Service Definition Draft file\r\n    sharing_draft.exportToSDDraft(sddraft_output_filename)\r\n    outsddraft = sddraft_output_filename\r\n    arcpy.AddMessage(\"Service definition draft created\")\r\n\r\n    # Set time zone\r\n    if (timezone != \"\"):\r\n        property_set = [{\r\n            \"key\": \"dateFieldsRespectsDayLightSavingTime\",\r\n            \"value\": \"true\"\r\n        },\r\n            {\r\n                \"key\": \"dateFieldsTimezoneID\",\r\n                \"value\": timezone\r\n            }]\r\n        SetTimezone(sddraft_output_filename, property_set=property_set)\r\n\r\n    # Create Service Definition file\r\n    sd_filename = service + \".sd\"\r\n    sd_output_filename = os.path.join(outdir, sd_filename)\r\n    arcpy.StageService_server(sddraft_output_filename, sd_output_filename)\r\n    arcpy.AddMessage(\"Service definition created\")\r\n\r\n    # Share to portal\r\n    output = arcpy.UploadServiceDefinition_server(sd_output_filename, federated_server_url,\r\n                                                  in_override=\"OVERRIDE_DEFINITION\", in_public=share_public,\r\n                                                  in_organization=share_organization, in_groups=share_groups)\r\n    arcpy.AddMessage(\"Service published\")\r\n\r\n    return output[5]\r\n\r\ndef SetTimezone(sddraftPath, property_set):\r\n    # Read the sddraft xml.\r\n    doc = DOM.parse(sddraftPath)\r\n\r\n    # Find all elements named TypeName. This is where the server object extension\r\n    # (SOE) names are defined.\r\n    typeNames = doc.getElementsByTagName('TypeName')\r\n    for typeName in typeNames:\r\n        # Get the TypeName to enable\r\n        if typeName.firstChild.data == \"MapServer\":\r\n            extension = typeName.parentNode\r\n            # prp = extension.childNodes.getElementsByTagNameNS('PropertyArray')\r\n            for extElement in extension.childNodes:\r\n                if extElement.tagName == 'Definition':\r\n                    for definition in extElement.childNodes:\r\n                        if definition.tagName == 'ConfigurationProperties':\r\n                            for config_prop in definition.childNodes:\r\n                                if config_prop.tagName == 'PropertyArray':\r\n                                    for prop in property_set:\r\n                                        prop_set = doc.createElement(\"PropertySetProperty\")\r\n                                        attr = doc.createAttribute(\"xsi:type\")\r\n                                        attr.value = \"typens:PropertySetProperty\"\r\n                                        prop_set.setAttributeNode(attr)\r\n\r\n                                        prop_key = doc.createElement(\"Key\")\r\n                                        txt = doc.createTextNode(prop[\"key\"])\r\n                                        prop_key.appendChild(txt)\r\n                                        prop_set.appendChild(prop_key)\r\n\r\n                                        prop_value = doc.createElement(\"Value\")\r\n                                        attr = doc.createAttribute(\"xsi:type\")\r\n                                        attr.value = \"xs:string\"\r\n                                        prop_value.setAttributeNode(attr)\r\n                                        txt = doc.createTextNode(prop[\"value\"])\r\n                                        prop_value.appendChild(txt)\r\n                                        prop_set.appendChild(prop_value)\r\n\r\n                                        config_prop.appendChild(prop_set)\r\n\r\n    # Write to the .sddraft file\r\n    f = open(sddraftPath, 'w')\r\n    doc.writexml(f)\r\n    f.close()\r\n    arcpy.AddMessage(\"Time zone set\")\r\n    return\r\n\r\nif __name__ == '__main__':\r\n    # ScriptTool parameters\r\n    map = arcpy.GetParameter(0)\r\n    service = arcpy.GetParameterAsText(1)\r\n    summary = arcpy.GetParameterAsText(2)\r\n    tags = arcpy.GetParameterAsText(3)\r\n    description = arcpy.GetParameterAsText(4)\r\n    overwriteService = arcpy.GetParameter(5)\r\n    portalFolder = arcpy.GetParameterAsText(6)\r\n    timezone = arcpy.GetParameterAsText(7)\r\n    federatedServerUrl = arcpy.GetParameterAsText(8)\r\n    share_public = arcpy.GetParameterAsText(9)\r\n    share_organization = arcpy.GetParameterAsText(10)\r\n    share_groups = arcpy.GetParameterAsText(11)\r\n    outdir = arcpy.GetParameterAsText(12)\r\n\r\n    rest_endpoint = ScriptTool(map, service, summary, tags, description, overwriteService, portalFolder, timezone, federatedServerUrl, share_public, share_organization, share_groups, outdir)\r\n    arcpy.SetParameterAsText(1, rest_endpoint)\r\n    arcpy.AddMessage(rest_endpoint)","spotlight_name":"","section_title":"","position":"Center","spotlight_image":false},{"acf_fc_layout":"content","content":"<p>The need for readily available information during times of crisis makes your GIS work invaluable. In this article, we\u2019ve discussed how to create and use script tools and ModelBuilder in ArcGIS Pro to efficiently publish and update your web layers. Learn more about how to <a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/help\/sharing\/overview\/share-with-arcgis-pro.htm\">share your work in ArcGIS Pro<\/a>.<\/p>\n"}],"authors":[{"ID":81122,"user_firstname":"Jonah","user_lastname":"Lay","nickname":"Jonah Lay","user_nicename":"jlay","display_name":"Jonah Lay","user_email":"jlay@esri.com","user_url":"","user_registered":"2020-08-11 20:13:08","user_description":"Jonah is a product engineer and writer on the ArcGIS Pro Sharing Team with a background in environmental science.","user_avatar":"<img alt='' src='https:\/\/secure.gravatar.com\/avatar\/8e1fdf042a4590ab8de45caebdbeff398e41b06f59ce3504b8f08036538638e1?s=96&#038;d=blank&#038;r=g' srcset='https:\/\/secure.gravatar.com\/avatar\/8e1fdf042a4590ab8de45caebdbeff398e41b06f59ce3504b8f08036538638e1?s=192&#038;d=blank&#038;r=g 2x' class='avatar avatar-96 photo' height='96' width='96' loading='lazy' decoding='async'\/>"}],"related_articles":"","card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/08\/Thumbnail7D.png","wide_image":false},"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>Publish and overwrite web layers in ModelBuilder<\/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\/arcgis-pro\/mapping\/publish-and-overwrite-web-layers-in-modelbuilder\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Publish and overwrite web layers in ModelBuilder\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/publish-and-overwrite-web-layers-in-modelbuilder\" \/>\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=\"2021-11-09T21:42:40+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\/arcgis-pro\/mapping\/publish-and-overwrite-web-layers-in-modelbuilder#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/publish-and-overwrite-web-layers-in-modelbuilder\"},\"author\":{\"name\":\"Jonah Lay\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/bba2fe6e956172be4b980c9ececf0777\"},\"headline\":\"Publish and overwrite web layers in ModelBuilder\",\"datePublished\":\"2021-08-17T14:30:02+00:00\",\"dateModified\":\"2021-11-09T21:42:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/publish-and-overwrite-web-layers-in-modelbuilder\"},\"wordCount\":7,\"commentCount\":27,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"keywords\":[\"ModelBuilder\",\"overwrite\",\"publish\",\"python\",\"sharing\"],\"articleSection\":[\"Data Management\",\"Mapping\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/publish-and-overwrite-web-layers-in-modelbuilder#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/publish-and-overwrite-web-layers-in-modelbuilder\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/publish-and-overwrite-web-layers-in-modelbuilder\",\"name\":\"Publish and overwrite web layers in ModelBuilder\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2021-08-17T14:30:02+00:00\",\"dateModified\":\"2021-11-09T21:42:40+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/publish-and-overwrite-web-layers-in-modelbuilder#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/publish-and-overwrite-web-layers-in-modelbuilder\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/publish-and-overwrite-web-layers-in-modelbuilder#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Publish and overwrite web layers in ModelBuilder\"}]},{\"@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\/bba2fe6e956172be4b980c9ececf0777\",\"name\":\"Jonah Lay\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8e1fdf042a4590ab8de45caebdbeff398e41b06f59ce3504b8f08036538638e1?s=96&d=blank&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8e1fdf042a4590ab8de45caebdbeff398e41b06f59ce3504b8f08036538638e1?s=96&d=blank&r=g\",\"caption\":\"Jonah Lay\"},\"description\":\"Jonah is a product engineer and writer on the ArcGIS Pro Sharing Team with a background in environmental science.\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/author\/jlay\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Publish and overwrite web layers in ModelBuilder","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\/arcgis-pro\/mapping\/publish-and-overwrite-web-layers-in-modelbuilder","og_locale":"en_US","og_type":"article","og_title":"Publish and overwrite web layers in ModelBuilder","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/publish-and-overwrite-web-layers-in-modelbuilder","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","article_modified_time":"2021-11-09T21:42:40+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\/arcgis-pro\/mapping\/publish-and-overwrite-web-layers-in-modelbuilder#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/publish-and-overwrite-web-layers-in-modelbuilder"},"author":{"name":"Jonah Lay","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/bba2fe6e956172be4b980c9ececf0777"},"headline":"Publish and overwrite web layers in ModelBuilder","datePublished":"2021-08-17T14:30:02+00:00","dateModified":"2021-11-09T21:42:40+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/publish-and-overwrite-web-layers-in-modelbuilder"},"wordCount":7,"commentCount":27,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"keywords":["ModelBuilder","overwrite","publish","python","sharing"],"articleSection":["Data Management","Mapping"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/publish-and-overwrite-web-layers-in-modelbuilder#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/publish-and-overwrite-web-layers-in-modelbuilder","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/publish-and-overwrite-web-layers-in-modelbuilder","name":"Publish and overwrite web layers in ModelBuilder","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2021-08-17T14:30:02+00:00","dateModified":"2021-11-09T21:42:40+00:00","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/publish-and-overwrite-web-layers-in-modelbuilder#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/publish-and-overwrite-web-layers-in-modelbuilder"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/publish-and-overwrite-web-layers-in-modelbuilder#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"Publish and overwrite web layers in ModelBuilder"}]},{"@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\/bba2fe6e956172be4b980c9ececf0777","name":"Jonah Lay","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8e1fdf042a4590ab8de45caebdbeff398e41b06f59ce3504b8f08036538638e1?s=96&d=blank&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8e1fdf042a4590ab8de45caebdbeff398e41b06f59ce3504b8f08036538638e1?s=96&d=blank&r=g","caption":"Jonah Lay"},"description":"Jonah is a product engineer and writer on the ArcGIS Pro Sharing Team with a background in environmental science.","url":"https:\/\/www.esri.com\/arcgis-blog\/author\/jlay"}]}},"text_date":"August 17, 2021","author_name":"Jonah Lay","author_page":"https:\/\/www.esri.com\/arcgis-blog\/author\/jlay","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":24331,"name":"ModelBuilder","slug":"modelbuilder","term_group":0,"term_taxonomy_id":24331,"taxonomy":"post_tag","description":"","parent":0,"count":28,"filter":"raw"},{"term_id":761652,"name":"overwrite","slug":"overwrite","term_group":0,"term_taxonomy_id":761652,"taxonomy":"post_tag","description":"","parent":0,"count":1,"filter":"raw"},{"term_id":33691,"name":"publish","slug":"publish","term_group":0,"term_taxonomy_id":33691,"taxonomy":"post_tag","description":"","parent":0,"count":7,"filter":"raw"},{"term_id":24341,"name":"python","slug":"python","term_group":0,"term_taxonomy_id":24341,"taxonomy":"post_tag","description":"","parent":0,"count":171,"filter":"raw"},{"term_id":24801,"name":"sharing","slug":"sharing","term_group":0,"term_taxonomy_id":24801,"taxonomy":"post_tag","description":"","parent":0,"count":32,"filter":"raw"}],"category_data":[{"term_id":23851,"name":"Data Management","slug":"data-management","term_group":0,"term_taxonomy_id":23851,"taxonomy":"category","description":"","parent":0,"count":920,"filter":"raw"},{"term_id":22941,"name":"Mapping","slug":"mapping","term_group":0,"term_taxonomy_id":22941,"taxonomy":"category","description":"","parent":0,"count":2690,"filter":"raw"}],"product_data":[{"term_id":36561,"name":"ArcGIS Pro","slug":"arcgis-pro","term_group":0,"term_taxonomy_id":36561,"taxonomy":"product","description":"","parent":0,"count":2036,"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\/1268382","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\/81122"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/comments?post=1268382"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/1268382\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=1268382"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=1268382"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=1268382"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=1268382"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=1268382"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}