We are upgrading from ArcGIS Enterprise/Portal 10.3 to 10.6 soon. We plan to migrate our MXDs to ArcGIS Pro on the desktop. From there, we will publish either to our on-premises ArcGIS Portal or ArcGIS Online for Organizations.
Instead of just clicking on the options in the Share ribbon in Pro, we are hoping to create a more repeatable and transparent publishing process. We all code Python here, so that’s our language preference (maybe creating a Toolbox?), but we are open to other languages. Our objectives include:
- Record keeping: Create a log of who published what when where. We may also want the user to enter some additional info, such as who requested the layer, what apps are consuming it, and when to remove it. We are thinking of storing this in a SQL table.
- Enforce process: Apply rules to the publishing process, e.g.: require that every layer’s metadata fields are filled in, standardize coordinate systems.
- Repeatability: Once the user publishes as a service or hosted feature layer, store all the parameters so it can be reloaded/updated at a later date (e.g.: where it was saved to, what it was named, security roles). I was thinking we could just save these in properties files, stored in Git for team access.
We are open to whatever tools save us work, but prefer Python-based tools (ArcPy, ArcGIS API for Python). I've previously written Python to interact with the REST Admin site's JSON interface, so that's a possibility. I also saw something about the ArcGIS Server create service command line utility, but I'm not sure if this could work with Portal & AGOL, too.
Before we charge ahead, I just wanted to see if anyone else out there has done this, knows of a solution, and/or wants to share some advice/code.