<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Help designing load test in ArcGIS Enterprise Questions</title>
    <link>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17297#M686</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for the response, Thomas. Unfortunately the "1=1" query *IS* the issue we're experiencing. If the query returns an empty array of results, the layer of stream gages doesn't get constructed properly (it's done client side) and that's what people are complaining about. The table getting query'd has anywhere from 2800-3400 records in it at any given time. The other two layers in the map are incredibly small (point layer of 16 points &amp;amp; county boundary line features). I ran my JMeter load test 100 times yesterday and only received correct results 51% of the time (results were identical for AGS 10.1 and AGS 10.3).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm kinda convinced we don't know what we're doing to support high load services (using the ESRI Web Adapter, no cluster of AGS servers, etc) but, to quote the adage, "that's not my department". As the developer, I just get the blame that the application doesn't work.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 24 Feb 2016 16:20:21 GMT</pubDate>
    <dc:creator>SteveCole</dc:creator>
    <dc:date>2016-02-24T16:20:21Z</dc:date>
    <item>
      <title>Help designing load test</title>
      <link>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17294#M683</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Our organization is experiencing issues with a service during periods of high demand. The service supports a flood warning system so those periods of high demand are sporadic so I'm looking towards using a load test with Apache JMeter to help us evaluate what we can do to better support our needs. I'm using &lt;A href="https://tereshenkov.wordpress.com/2013/06/12/apache-jmeter-for-arcgis-server-simple-tutorial/"&gt;this blog post&lt;/A&gt; and tutorial to help guide me and I've installed JMeter and have a test case set up. Since I'm new to this, I'm not sure if my parameters really mirror the real world so I'm posting to get some more experienced eyes on this.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Anyways, instead of a a map image export like in the tutorial, I'm just performing a simple "1=1" query on our particular map service. Our web map builds our stream gage layer on the fly at page load using this query based on a table in this particular service.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Below are a couple of screenshots from Google Analytics real-time view during our most recent events:&lt;/P&gt;&lt;P&gt;&lt;IMG alt="trafficExample01.jpg" class="image-1 jive-image" src="https://community.esri.com/legacyfs/online/187280_trafficExample01.jpg" style="width: 620px; height: 118px;" /&gt;&lt;IMG alt="trafficExample02.jpg" class="image-2 jive-image" src="https://community.esri.com/legacyfs/online/187281_trafficExample02.jpg" style="width: 620px; height: 121px;" /&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Based on this, I created a test with a thread of 40 users, a ramp up period of 20 seconds, and a loop count of 3. Does this sound reasonable, given the real-world examples shown above? Am I on the right track of way off?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks!&lt;/P&gt;&lt;P&gt;Steve&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 23 Feb 2016 18:55:12 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17294#M683</guid>
      <dc:creator>SteveCole</dc:creator>
      <dc:date>2016-02-23T18:55:12Z</dc:date>
    </item>
    <item>
      <title>Re: Help designing load test</title>
      <link>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17295#M684</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I've had good luck with Jmeter. Instead of the 1=1 query plan, I'd add a csv element pre-populated with various zoom and extent levels, a wide range, and randomize zoom and extent with each query. Further more, I'd add a pan request. In this manner, you'll more accurately test what a real user does: Access the initial map view, then zoom and pan around. I've found rapid panning is what puts the most load on REST requests. To get really "real", add an identify query here and there. Zoom, pan, then click on something. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;IMG class="image-1 jive-image" src="https://community.esri.com/legacyfs/online/187384_pastedImage_0.png" style="max-width: 1200px; max-height: 900px;" /&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Feb 2016 14:53:47 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17295#M684</guid>
      <dc:creator>ThomasColson</dc:creator>
      <dc:date>2016-02-24T14:53:47Z</dc:date>
    </item>
    <item>
      <title>Re: Help designing load test</title>
      <link>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17296#M685</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;...and as a side-note: Jmeter is difficult, if not impossible, to configure to test against ArcGIS server that has a https cert on the web adapter and the GIS server. You might need to turn those things off, but be sure to test the http requests as they pass through the web adapter: if you test against the GIS server (Apache) but are using a web adapater, you won't see the performance hit that using a WA incurs.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Feb 2016 15:00:25 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17296#M685</guid>
      <dc:creator>ThomasColson</dc:creator>
      <dc:date>2016-02-24T15:00:25Z</dc:date>
    </item>
    <item>
      <title>Re: Help designing load test</title>
      <link>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17297#M686</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for the response, Thomas. Unfortunately the "1=1" query *IS* the issue we're experiencing. If the query returns an empty array of results, the layer of stream gages doesn't get constructed properly (it's done client side) and that's what people are complaining about. The table getting query'd has anywhere from 2800-3400 records in it at any given time. The other two layers in the map are incredibly small (point layer of 16 points &amp;amp; county boundary line features). I ran my JMeter load test 100 times yesterday and only received correct results 51% of the time (results were identical for AGS 10.1 and AGS 10.3).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm kinda convinced we don't know what we're doing to support high load services (using the ESRI Web Adapter, no cluster of AGS servers, etc) but, to quote the adage, "that's not my department". As the developer, I just get the blame that the application doesn't work.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Feb 2016 16:20:21 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17297#M686</guid>
      <dc:creator>SteveCole</dc:creator>
      <dc:date>2016-02-24T16:20:21Z</dc:date>
    </item>
    <item>
      <title>Re: Help designing load test</title>
      <link>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17298#M687</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;What is the architecture? Is this pulling from SQL, a remote data service, or local FGDB? Any chance you could put the same data on AGOL and run the same query? Is this going through HTTPS? Windows Authentication? I've gotten better performance by siloing the site (putting Web Adapter on it's own server). &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Feb 2016 16:33:57 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17298#M687</guid>
      <dc:creator>ThomasColson</dc:creator>
      <dc:date>2016-02-24T16:33:57Z</dc:date>
    </item>
    <item>
      <title>Re: Help designing load test</title>
      <link>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17299#M688</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I'm getting outside my knowledge since I'm not responsible for the backend stuff but it's in our organizations Enterprise SDE in SqlServer 2012.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It's not going through HTTPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We do use Windows Authentication&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I suspect that the web adapter is NOT silo'd. I'd bet money we just ran with the ESRI installation guide when setting things up.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Feb 2016 16:41:08 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17299#M688</guid>
      <dc:creator>SteveCole</dc:creator>
      <dc:date>2016-02-24T16:41:08Z</dc:date>
    </item>
    <item>
      <title>Re: Help designing load test</title>
      <link>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17300#M689</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;80% confident SQL is your bottleneck. Live GIS data from SQL will not stand up to "high-demand", which I define as more than 10 users, unless you're running SQL on a clustered, high-availability instance. Not likely you have 100k$ lying around, so you're best bet is to look at what sort of storage format you're using for the feature classes, index tune where/if you can, and/or move some of the data into views or hourly-updated FGDB's. USGS National Map serves 1000's of requests per hour (minute?), but sourced from FGDB. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Feb 2016 16:54:02 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17300#M689</guid>
      <dc:creator>ThomasColson</dc:creator>
      <dc:date>2016-02-24T16:54:02Z</dc:date>
    </item>
    <item>
      <title>Re: Help designing load test</title>
      <link>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17301#M690</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;That's interesting. The stream gage data is stored natively in an MS Access database (old gage software which is on its last legs officially and unofficially). Due to some permission conditions the gage software has with its corresponding database, we've set up a system where we use a python script to transfer data from the MS Access db into an SDE table. I suppose we could alter that process and have it dump the information into a FGDB and publish off of that.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Feb 2016 17:49:45 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17301#M690</guid>
      <dc:creator>SteveCole</dc:creator>
      <dc:date>2016-02-24T17:49:45Z</dc:date>
    </item>
    <item>
      <title>Re: Help designing load test</title>
      <link>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17302#M691</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I forgot to add a key piece of information. The data transfer from MS Access to SDE occurs every 10,15 minutes. During the transfer the table in SDE is purged and then the Access records are inserted. We've been getting erratic run times on the script. Initially, it was completing in 4 seconds but somehow it grows to 1-2 minutes. During that time, of course, the SDE table has no records and results in no data for folks who happen to load/re-load the page at that time.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Feb 2016 18:08:37 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17302#M691</guid>
      <dc:creator>SteveCole</dc:creator>
      <dc:date>2016-02-24T18:08:37Z</dc:date>
    </item>
    <item>
      <title>Re: Help designing load test</title>
      <link>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17303#M692</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I do not think you would want to use a file gdb for your stream gauge data.&amp;nbsp; My organization tried to setup a road closure mapservice that would update every 5 minutes to the registered file gdb from another database that was capturing the data from a MS Access application.&amp;nbsp; The mapservice was OK for some time, but the constant refreshing of data (OBJECTIDs were climbing rapidly) caused a severe degradation of performance.&amp;nbsp; In the end someone scripted the data to be updated on AGOL every 5 minutes which resolved the performance issue.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As such, maybe you could make use of AGOL's scalability to solve your performance issue as an alternative to your current setup.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Feb 2016 18:44:45 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17303#M692</guid>
      <dc:creator>MichaelVolz</dc:creator>
      <dc:date>2016-02-24T18:44:45Z</dc:date>
    </item>
    <item>
      <title>Re: Help designing load test</title>
      <link>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17304#M693</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;That's excellent feedback, Michael, thank you. It's pretty disconcerting that, as customers, you spend an arm &amp;amp; a leg for enterprise level products and ESRI still manages to find a way to force you to spend more money on something like AGOL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I like dealing with web mapping less and less each day. When's Librarian coming back into vogue?..&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Feb 2016 19:05:27 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17304#M693</guid>
      <dc:creator>SteveCole</dc:creator>
      <dc:date>2016-02-24T19:05:27Z</dc:date>
    </item>
    <item>
      <title>Re: Help designing load test</title>
      <link>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17305#M694</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;A href="https://community.esri.com/migrated-users/8066"&gt;Michael Volz&lt;/A&gt;​ Your option to post to AGOL might be something our organization needs to pursue. Would you be willing to share that script (stripped of specific server/account references, of course)? We could take the discussion off the board, if you're so inclined.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Steve&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Feb 2016 20:29:15 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17305#M694</guid>
      <dc:creator>SteveCole</dc:creator>
      <dc:date>2016-02-24T20:29:15Z</dc:date>
    </item>
    <item>
      <title>Re: Help designing load test</title>
      <link>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17306#M695</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I would be inclined to take the discussion off the board because it is not my script that works with AGOL.&amp;nbsp; I tried to script the update process for my organization's ArcGIS Server, but I was never able to overcome the degradation of the mapservice.&amp;nbsp; The person in my organization who created the Access application was the person who created the script to update the data in AGOL, so I would need to talk to that person.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In the meantime I would search ESRI documentation and the geonet to find code (I would recommend python) to upload the stream gauge data to AGOL every 15 minutes.&amp;nbsp; I think this is a pretty common workflow for endusers who have AGOL but do not have ArcGIS Server.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Feb 2016 20:36:04 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17306#M695</guid>
      <dc:creator>MichaelVolz</dc:creator>
      <dc:date>2016-02-24T20:36:04Z</dc:date>
    </item>
    <item>
      <title>Re: Help designing load test</title>
      <link>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17307#M696</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Understandable.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I don't do much Python but I did develop our script that transfers the MS Access records over into an SDE table. I think I'm solid with connecting with Access and the records in it but extremely shaky with AGOL. We, as an organization, haven't embraced AGOL at all so any scripting to interact with AGOL is completely foreign to me. It just sounds like the project you describe is real similar to the process we use for our Gage application.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Feb 2016 21:49:33 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17307#M696</guid>
      <dc:creator>SteveCole</dc:creator>
      <dc:date>2016-02-24T21:49:33Z</dc:date>
    </item>
    <item>
      <title>Re: Help designing load test</title>
      <link>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17308#M697</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;A href="https://blogs.esri.com/esri/arcgis/2014/10/19/updating-hosted-feature-services-in-arcgis-online/" title="https://blogs.esri.com/esri/arcgis/2014/10/19/updating-hosted-feature-services-in-arcgis-online/" rel="nofollow noopener noreferrer" target="_blank"&gt;Updating Hosted Feature Services in ArcGIS Online | ArcGIS Blog&lt;/A&gt; walks you through how to update an AGOL service. In my situation, my SDE is behind what is arguably the most restrictive firewall in the history of the internet, so I use this to refresh my AGOl services nightly, for a dozen-ish feature services I have on there. Note this is one-way, changes on the SDE go to AGOL, I don't have editing enables on the AGOL side (but there are scripts that will do it both ways). You could easily fire this every 15 minutes with Windows Task Scheduler. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Another architecture you may want to consider is CartoDB. Cartodb can auto sync with many proprietary formats and render those data with a very lightweight map viewer such as leaflet. I have on particular project where due to the size of the data (terabytes), frequency of update, and cost, CartoDB and a java map viewer was the only way to go. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;# Import system modules
import urllib, urllib2, json
import sys, os
import requests
import arcpy
import ConfigParser
from xml.etree import ElementTree as ET


class AGOLHandler(object):&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; def __init__(self, username, password, serviceName, folderName):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.username = username
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.password = password
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.serviceName = serviceName
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.token, self.http = self.getToken(username, password)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.itemID = self.findItem("Feature Service")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.SDitemID = self.findItem("Service Definition")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.folderName = folderName
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.folderID = self.findFolder()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; def getToken(self, username, password, exp=60):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; referer = "&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http%3A%2F%2Fwww.arcgis.com%2F" target="_blank"&gt;http://www.arcgis.com/&lt;/A&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; query_dict = {'username': username,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'password': password,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'expiration': str(exp),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'client': 'referer',
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'referer': referer,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'f': 'json'} 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; query_string = urllib.urlencode(query_dict)
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; url = "&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fwww.arcgis.com%2Fsharing%2Frest%2FgenerateToken" target="_blank"&gt;https://www.arcgis.com/sharing/rest/generateToken&lt;/A&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; token = json.loads(urllib.urlopen(url + "?f=json", query_string).read())
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if "token" not in token:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print token['error']
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sys.exit()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; httpPrefix = "&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http%3A%2F%2Fwww.arcgis.com%2Fsharing%2Frest" target="_blank"&gt;http://www.arcgis.com/sharing/rest&lt;/A&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if token['ssl'] == True:
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; httpPrefix = "&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fwww.arcgis.com%2Fsharing%2Frest" target="_blank"&gt;https://www.arcgis.com/sharing/rest&lt;/A&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return token['token'], httpPrefix
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; def findItem(self, findType):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Find the itemID of whats being updated
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; searchURL = self.http + "/search"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; query_dict = {'f': 'json',
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'token': self.token,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'q': "title:\""+ self.serviceName + "\"AND owner:\"" + self.username + "\" AND type:\"" + findType + "\""}&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jsonResponse = sendAGOLReq(searchURL, query_dict)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if jsonResponse['total'] == 0:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "\nCould not find a service to update. Check the service name in the settings.ini"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sys.exit()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print("found {} : {}").format(findType, jsonResponse['results'][0]["id"])&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return jsonResponse['results'][0]["id"]


&amp;nbsp;&amp;nbsp;&amp;nbsp; def findFolder(self):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Find the ID of the folder containing the service
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #


&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if self.folderName == "None":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return ""
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; findURL = self.http + "/content/users/{}".format(self.username)


&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; query_dict = {'f': 'json',
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'num': 1,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'token': self.token}


&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jsonResponse = sendAGOLReq(findURL, query_dict)


&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for folder in jsonResponse['folders']:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if folder['title'] == self.folderName:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return folder['id']
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "\nCould not find the specified folder name provided in the settings.ini"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "-- If your content is in the root folder, change the folder name to 'None'"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sys.exit()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 


def urlopen(url, data=None):
&amp;nbsp;&amp;nbsp;&amp;nbsp; # monkey-patch URLOPEN
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; referer = "&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http%3A%2F%2Fwww.arcgis.com%2F" target="_blank"&gt;http://www.arcgis.com/&lt;/A&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; req = urllib2.Request(url)
&amp;nbsp;&amp;nbsp;&amp;nbsp; req.add_header('Referer', referer)


&amp;nbsp;&amp;nbsp;&amp;nbsp; if data:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; response = urllib2.urlopen(req, data)
&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; response = urllib2.urlopen(req)


&amp;nbsp;&amp;nbsp;&amp;nbsp; return response




def makeSD(MXD, serviceName, tempDir, outputSD, maxRecords):
&amp;nbsp;&amp;nbsp;&amp;nbsp; #
&amp;nbsp;&amp;nbsp;&amp;nbsp; # create a draft SD and modify the properties to overwrite an existing FS
&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.env.overwriteOutput = True
&amp;nbsp;&amp;nbsp;&amp;nbsp; # All paths are built by joining names to the tempPath
&amp;nbsp;&amp;nbsp;&amp;nbsp; SDdraft = os.path.join(tempDir, "tempdraft.sddraft")
&amp;nbsp;&amp;nbsp;&amp;nbsp; newSDdraft = os.path.join(tempDir, "updatedDraft.sddraft")&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.mapping.CreateMapSDDraft(MXD, SDdraft, serviceName, "MY_HOSTED_SERVICES")
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; # Read the contents of the original SDDraft into an xml parser
&amp;nbsp;&amp;nbsp;&amp;nbsp; doc = ET.parse(SDdraft) 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; root_elem = doc.getroot()
&amp;nbsp;&amp;nbsp;&amp;nbsp; if root_elem.tag != "SVCManifest":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; raise ValueError("Root tag is incorrect. Is {} a .sddraft file?".format(SDDraft))
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; # The following 6 code pieces modify the SDDraft from a new MapService
&amp;nbsp;&amp;nbsp;&amp;nbsp; # with caching capabilities to a FeatureService with Query,Create,
&amp;nbsp;&amp;nbsp;&amp;nbsp; # Update,Delete,Uploads,Editing capabilities as well as the ability to set the max
&amp;nbsp;&amp;nbsp;&amp;nbsp; # records on the service.
&amp;nbsp;&amp;nbsp;&amp;nbsp; # The first two lines (commented out) are no longer necessary as the FS
&amp;nbsp;&amp;nbsp;&amp;nbsp; # is now being deleted and re-published, not truly overwritten as is the
&amp;nbsp;&amp;nbsp;&amp;nbsp; # case when publishing from Desktop.
&amp;nbsp;&amp;nbsp;&amp;nbsp; # The last three pieces change Map to Feature Service, disable caching
&amp;nbsp;&amp;nbsp;&amp;nbsp; # and set appropriate capabilities. You can customize the capabilities by
&amp;nbsp;&amp;nbsp;&amp;nbsp; # removing items.
&amp;nbsp;&amp;nbsp;&amp;nbsp; # Note you cannot disable Query from a Feature Service.
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; #doc.find("./Type").text = "esriServiceDefinitionType_Replacement"
&amp;nbsp;&amp;nbsp;&amp;nbsp; #doc.find("./State").text = "esriSDState_Published"
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; # Change service type from map service to feature service
&amp;nbsp;&amp;nbsp;&amp;nbsp; for config in doc.findall("./Configurations/SVCConfiguration/TypeName"):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if config.text == "MapServer":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; config.text = "FeatureServer"

&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; #Turn off caching
&amp;nbsp;&amp;nbsp;&amp;nbsp; for prop in doc.findall("./Configurations/SVCConfiguration/Definition/" +
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "ConfigurationProperties/PropertyArray/" +
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "PropertySetProperty"):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if prop.find("Key").text == 'isCached':
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prop.find("Value").text = "false"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if prop.find("Key").text == 'maxRecordCount':
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prop.find("Value").text = maxRecords
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; # Turn on feature access capabilities
&amp;nbsp;&amp;nbsp;&amp;nbsp; for prop in doc.findall("./Configurations/SVCConfiguration/Definition/Info/PropertyArray/PropertySetProperty"):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if prop.find("Key").text == 'WebCapabilities':
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prop.find("Value").text = "Query,Extract"


&amp;nbsp;&amp;nbsp;&amp;nbsp; # Add the namespaces which get stripped, back into the .SD&amp;nbsp;&amp;nbsp; 
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; root_elem.attrib["xmlns:typens"] = '&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http%3A%2F%2Fwww.esri.com%2Fschemas%2FArcGIS%2F10.1" target="_blank"&gt;http://www.esri.com/schemas/ArcGIS/10.1&lt;/A&gt;&lt;SPAN&gt;'&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; root_elem.attrib["xmlns:xs"] ='&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http%3A%2F%2Fwww.w3.org%2F2001%2FXMLSchema" target="_blank"&gt;http://www.w3.org/2001/XMLSchema&lt;/A&gt;&lt;SPAN&gt;'&lt;/SPAN&gt;


&amp;nbsp;&amp;nbsp;&amp;nbsp; # Write the new draft to disk
&amp;nbsp;&amp;nbsp;&amp;nbsp; with open(newSDdraft, 'w') as f:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; doc.write(f, 'utf-8')
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; # Analyze the service
&amp;nbsp;&amp;nbsp;&amp;nbsp; analysis = arcpy.mapping.AnalyzeForSD(newSDdraft)
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; if analysis['errors'] == {}:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Stage the service
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.StageService_server(newSDdraft, outputSD)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Created {}".format(outputSD)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # If the sddraft analysis contained errors, display them and quit.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print analysis['errors']
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sys.exit()

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
def upload(fileName, tags, description):
&amp;nbsp;&amp;nbsp;&amp;nbsp; #
&amp;nbsp;&amp;nbsp;&amp;nbsp; # Overwrite the SD on AGOL with the new SD.
&amp;nbsp;&amp;nbsp;&amp;nbsp; # This method uses 3rd party module: requests
&amp;nbsp;&amp;nbsp;&amp;nbsp; #
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; updateURL = agol.http+'/content/users/{}/{}/items/{}/update'.format(agol.username, agol.folderID, agol.SDitemID)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; filesUp = {"file": open(fileName, 'rb')}
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; url = updateURL + "?f=json&amp;amp;token="+agol.token+ \
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "&amp;amp;filename="+fileName+ \
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "&amp;amp;type=Service Definition"\
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "&amp;amp;title="+agol.serviceName+ \
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "&amp;amp;tags="+tags+\
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "&amp;amp;description="+description
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; response = requests.post(url, files=filesUp);&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; itemPartJSON = json.loads(response.text)
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; if "success" in itemPartJSON:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; itemPartID = itemPartJSON['id']
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print("updated SD:&amp;nbsp; {}").format(itemPartID)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return True
&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "\n.sd file not uploaded. Check the errors and try again.\n" 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print itemPartJSON
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sys.exit()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; 
def publish():
&amp;nbsp;&amp;nbsp;&amp;nbsp; #
&amp;nbsp;&amp;nbsp;&amp;nbsp; # Publish the existing SD on AGOL (it will be turned into a Feature Service)
&amp;nbsp;&amp;nbsp;&amp;nbsp; #
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; publishURL = agol.http+'/content/users/{}/publish'.format(agol.username)
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; query_dict = {'itemID': agol.SDitemID,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'filetype': 'serviceDefinition',
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'overwrite': 'true',
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'f': 'json',
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'token': agol.token}&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; jsonResponse = sendAGOLReq(publishURL, query_dict)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; print("successfully updated...{}...").format(jsonResponse['services'])
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; return jsonResponse['services'][0]['serviceItemId']
&amp;nbsp;&amp;nbsp; 


def enableSharing(newItemID, everyone, orgs, groups):
&amp;nbsp;&amp;nbsp;&amp;nbsp; #
&amp;nbsp;&amp;nbsp;&amp;nbsp; # Share an item with everyone, the organization and/or groups
&amp;nbsp;&amp;nbsp;&amp;nbsp; #


&amp;nbsp;&amp;nbsp;&amp;nbsp; shareURL = agol.http+'/content/users/{}/{}/items/{}/share'.format(agol.username, agol.folderID, newItemID)


&amp;nbsp;&amp;nbsp;&amp;nbsp; if groups == None:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; groups = ''
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; query_dict = {'f': 'json',
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'everyone' : everyone,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'org' : orgs,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'groups' : groups,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'token': agol.token}&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; jsonResponse = sendAGOLReq(shareURL, query_dict)
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; print("successfully shared...{}...").format(jsonResponse['itemId'])&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; 
def sendAGOLReq(URL, query_dict):
&amp;nbsp;&amp;nbsp;&amp;nbsp; #
&amp;nbsp;&amp;nbsp;&amp;nbsp; # Helper function which takes a URL and a dictionary and sends the request
&amp;nbsp;&amp;nbsp;&amp;nbsp; #
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; query_string = urllib.urlencode(query_dict)&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; jsonResponse = urllib.urlopen(URL, urllib.urlencode(query_dict))
&amp;nbsp;&amp;nbsp;&amp;nbsp; jsonOuput = json.loads(jsonResponse.read())
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; wordTest = ["success", "results", "services", "notSharedWith", "folders"]
&amp;nbsp;&amp;nbsp;&amp;nbsp; if any(word in jsonOuput for word in wordTest):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return jsonOuput&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "\nfailed:"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print jsonOuput
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sys.exit()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; 
if __name__ == "__main__":
&amp;nbsp;&amp;nbsp;&amp;nbsp; #
&amp;nbsp;&amp;nbsp;&amp;nbsp; # start
&amp;nbsp;&amp;nbsp;&amp;nbsp; #
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Starting Feature Service publish process"
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; # Find and gather settings from the ini file
&amp;nbsp;&amp;nbsp;&amp;nbsp; localPath = sys.path[0]
&amp;nbsp;&amp;nbsp;&amp;nbsp; settingsFile = os.path.join(localPath, "settings.ini")


&amp;nbsp;&amp;nbsp;&amp;nbsp; if os.path.isfile(settingsFile):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; config = ConfigParser.ConfigParser()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; config.read(settingsFile)
&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "INI file not found. \nMake sure a valid 'settings.ini' file exists in the same directory as this script."
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sys.exit()
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; # AGOL Credentials
&amp;nbsp;&amp;nbsp;&amp;nbsp; inputUsername = config.get( 'AGOL', 'USER')
&amp;nbsp;&amp;nbsp;&amp;nbsp; inputPswd = config.get('AGOL', 'PASS')


&amp;nbsp;&amp;nbsp;&amp;nbsp; # FS values
&amp;nbsp;&amp;nbsp;&amp;nbsp; MXD = config.get('FS_INFO', 'MXD')
&amp;nbsp;&amp;nbsp;&amp;nbsp; serviceName = config.get('FS_INFO', 'SERVICENAME') 
&amp;nbsp;&amp;nbsp;&amp;nbsp; folderName = config.get('FS_INFO', 'FOLDERNAME')
&amp;nbsp;&amp;nbsp;&amp;nbsp; tags = config.get('FS_INFO', 'TAGS')
&amp;nbsp;&amp;nbsp;&amp;nbsp; description = config.get('FS_INFO', 'DESCRIPTION')
&amp;nbsp;&amp;nbsp;&amp;nbsp; maxRecords = config.get('FS_INFO', 'MAXRECORDS')
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; # Share FS to: everyone, org, groups
&amp;nbsp;&amp;nbsp;&amp;nbsp; shared = config.get('FS_SHARE', 'SHARE')
&amp;nbsp;&amp;nbsp;&amp;nbsp; everyone = config.get('FS_SHARE', 'EVERYONE')
&amp;nbsp;&amp;nbsp;&amp;nbsp; orgs = config.get('FS_SHARE', 'ORG')
&amp;nbsp;&amp;nbsp;&amp;nbsp; groups = config.get('FS_SHARE', 'GROUPS')&amp;nbsp; #Groups are by ID. Multiple groups comma separated
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; # create a temp directory under the script&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; tempDir = os.path.join(localPath, "tempDir")
&amp;nbsp;&amp;nbsp;&amp;nbsp; if not os.path.isdir(tempDir):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; os.mkdir(tempDir) 
&amp;nbsp;&amp;nbsp;&amp;nbsp; finalSD = os.path.join(tempDir, serviceName + ".sd") 


&amp;nbsp;&amp;nbsp;&amp;nbsp; #initialize AGOLHandler class
&amp;nbsp;&amp;nbsp;&amp;nbsp; agol = AGOLHandler(inputUsername, inputPswd, serviceName, folderName)
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; # Turn map document into .SD file for uploading
&amp;nbsp;&amp;nbsp;&amp;nbsp; makeSD(MXD, serviceName, tempDir, finalSD, maxRecords)
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; # overwrite the existing .SD on arcgis.com
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; if upload(finalSD, tags, description):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # publish the sd which was just uploaded
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newItemID = publish()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # share the item
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if shared:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; enableSharing(newItemID, everyone, orgs, groups)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "\nfinished."&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;and here's the ini file: &lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;[FS_INFO]
SERVICENAME = GRSM_FISH_3_PASS_PT
FOLDERNAME = Aqua
MXD = C:\PRODUCTION\GRSM_3_PASS\3_PASS_WORKING\Maps\ArcGIS\GRSMAGOL_FISH_3_PASS_PT.mxd
TAGS = IANDM, Water, Water Quality, HEM, Aquatic Resources, Surface Water Dynamics, Fishes, Vital Signs, Biodiversity Database, Freshwater Communities, Hydrology Event Management, Inventory And Monitoring, Fish, Hydrology, NHD, ATBI, 3-Pass, Electroshocking, Microfish
DESCRIPTION&amp;nbsp; = These data show the location (only) of Fish 3-Pass Electroshocking study and monitoring sites within the park. Electoshocking utilizes an electrical generator which emits a non-lethal electrical current through the water. This electrical shock is employed to either stun the fish or encourages them to swim towards the electrical field for survey collection.
MAXRECORDS = 3000


[FS_SHARE]
SHARE = True
EVERYONE = true
ORG = true
GROUPS = blah blah blah


[AGOL]
USER = sasquatch
&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 Dec 2021 20:41:40 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17308#M697</guid>
      <dc:creator>ThomasColson</dc:creator>
      <dc:date>2021-12-10T20:41:40Z</dc:date>
    </item>
    <item>
      <title>Re: Help designing load test</title>
      <link>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17309#M698</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Steve:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In another thread you said "Sorry, no, I haven't. Part of me isn't happy that I'm doing someone else's job for them and the other part of me got busy with other things. Plus it's not currently flooding."&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Such is the life of a GIS worker in an enterprise environment.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 Mar 2016 17:15:07 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17309#M698</guid>
      <dc:creator>MichaelVolz</dc:creator>
      <dc:date>2016-03-03T17:15:07Z</dc:date>
    </item>
    <item>
      <title>Re: Help designing load test</title>
      <link>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17310#M699</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Our organization has had a "wild west" type environment for many years. It's great if you have initiative and want to try things but it's not so great in times like this. I've learned a lot but I don't like the possibility of getting my reputation sullied by things that are not in my control.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 Mar 2016 17:24:06 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-enterprise-questions/help-designing-load-test/m-p/17310#M699</guid>
      <dc:creator>SteveCole</dc:creator>
      <dc:date>2016-03-03T17:24:06Z</dc:date>
    </item>
  </channel>
</rss>

