Skip navigation
All Places > Workforce for ArcGIS > Blog
1 2 Previous Next

Workforce for ArcGIS

19 posts

Welcome to the first in a series of blog posts that will teach you how to automate key workflows for Workforce for ArcGIS.


The Workforce module within the ArcGIS API for Python makes managing Workforce projects a simple and efficient task. We are constantly creating new scripts that simplify app-based workflows into just a few lines of code.

Whether you are setting up your first Workforce project, cleaning out a project with hundreds of old assignments, or trying to find new ways to improve your organization’s efficiency – the Python API will be a powerful addition to your geospatial arsenal.


This first blog is a step-by-step tutorial that will teach you how to configure a Workforce project and create assignments.



  • Getting started
  • Scenario
  • Download Workforce scripts
  • Import workers from a CSV file
  • Add assignment types
  • Create assignments based on an existing feature layer
  • Assign work based on location


Getting started


If you would like to complete each task alongside this exercise, first do the following: 



Note: If you don't have an ArcGIS account, you can sign up for a free trial




In this scenario, the city of Atlanta has identified 24 trees that are at risk of falling. These trees are in heavily developed areas, so it’s crucial that they be professionally inspected. The city has hired a tree risk assessment company to perform these inspections.  


You will use the ArcGIS API for Python to configure a Workforce project for the company. You will import the company’s workers, create assignments based on a feature layer containing the trees, and assign inspections to workers based on the zone that each worker oversees.


Download Workforce scripts


First, you need to clone or download the GitHub repository that contains the Python scripts for Workforce. Once it is downloaded, navigate to the “scripts” folder in either the terminal or the command prompt. I am using a Windows operating system for this example. 


cd C:\Users\user\Desktop\workforce-scripts-master\scripts


Install the required libraries using Python's default package installer, pip: 


pip install -r requirements.txt


Also install the shapely library. This will allow us to spatially assign work later on. 


conda install shapely


Once these are installed, all of the available Python scripts for Workforce are ready to use.


Import workers from a CSV


The import_workers Python script allows you to import workers directly from a CSV file. This script is especially useful for importing a large number of workers into a project. Rather than input your workers one by one in the Workforce app, you can run this single line of code instead.


We will use the import_workers script to import a CSV file of tree inspectors into this scenario's Workforce project. This is the CSV file that you downloaded earlier:


CSV file of tree inspectors


There are 5 tree inspectors that will be imported into the project. Their name, working status, title, contact number, and user ID will all be passed through the script.


Open this file and edit the name and userID columns with the information of at least four workers within your organization. Save your changes.


Note: This script has many options allowing the user to specify the names of each column within the CSV. Check out the import_workers readme for more information.


In the terminal or command prompt, run the import workers script:


python -u <username> -p <password> -org https://<org> -name-field name -status-field status -user-id-field userId -log-file log.txt -csv-file ../sample_data/tree_inspectors.csv -project-id <project id> -title-field title -contact-number-field contactNumber


Make sure you update the following fields with your own information:

  • Username and password
  • Organization
  • CSV file
  • Project ID (from the blank project you created) 

Once this script has been run, check that your tree inspectors have been successfully added to your project (shown below). 

List of added tree inspectors in the Workforce web interface

Add assignment types 


Note: We will be using Jupyter notebooks to complete the remaining tasks within this workflow. Notebooks are useful for visualizing data and running code step by step. Either open a blank Jupyter Notebook or follow along with the notebook you downloaded earlier.


First, import the ArcGIS API for Python Library. 

Code for importing the ArcGIS API for Python

Next, connect to your GIS and fetch the project using its project ID. 

Code for connecting to your GIS and fetching the project

Once this set-up is complete, you can start performing tasks specific to your project. You’ll first want to add assignment types to the project that are relevant to tree inspections.

Code for adding assignment types to tree inspections

After you run this code, you can check that the assignment types have been successfully added to the project (shown below).

Added assignment types in Workforce web interface


Create assignments based on an existing feature layer


The city of Atlanta has provided a feature layer containing the trees that are at risk of falling. Using the Python API, you can create an inspection assignment for each feature within this layer.


First, import the datetime library. Datetime allows us to pass the current time into the assigned date field.

Code for importing the datetime library

Then you can fetch the layer containing the trees, query it, and display it on a map.


Workforce stores assignments in the WGS84 Web Mercator projected coordinate system, so let’s ensure that the returned geometries are using this spatial reference.


Here is the item ID for the trees feature layer: 88495d3b613a41f4a70b9d61ef979b34


Code for querying the trees layer and displaying it on a map

The Atlanta Trees layer is displayed. 


Now you will create 24 “Inspect tree” assignments: one for each tree. You will loop through the trees feature layer to batch add assignments using the “Inspect tree” type we created in the previous section.  

Code for creating an assignment for each tree feature within the layer

To ensure that a new assignment was created for each tree, display the assignments layer on a map.

Code for displaying assignments layer on a map.

Your project now has 24 tree inspection assignments.


Assign work based on location


You have your tree inspectors and your assignments. Now it’s time to assign work. You will assign the inspections to four workers. Each inspector oversees a specific work zone in Atlanta, so they will only inspect trees that fall within their respective zone. You will use the work zone feature layer to assign each of the 24 tree inspections to a set of four zones.


We’ll import some modules from within the arcgis library to make typing these classes easier.


Code for importing the Geometry and WebMap modules.

Next, let’s get the Inspection Zones feature layer and display it on a map.


Here is the item ID for the Inspection Zones feature layer: ac044c7a2c94401eaeb1b215200feb57


Code for displaying the zones layer on a map

Add your assignments layer to the map so you can visualize how the assignments are distributed within the zones.  

Code for adding assignments layer to map of work zones

Next, you’ll create a spatially enabled data frame from the zones layer and grab all of the unassigned assignments.

Code for creating a spatially enabled data frame from the zones layer and grabbing all of the unassigned assignments.

Assign tree inspections to workers within each of their respective zones.

  • Trees in Zone 1 should be assigned to Josh
  • Trees in Zone 2 should be assigned to Jane
  • Trees in Zone 3 should be assigned to Nirav
  • Trees in Zone 4 should be assigned to Sharon

The following code will assign each worker to the trees that fall within the work zone they are responsible for.

Code for assigning each worker to the trees that fall within the work zone they are responsible for.

Run this code and then create a map with the updated assignments layer to make sure everything was assigned properly. If you click on any of the features, the status should read “Assigned”.

Code for creating a map with the updated assignments layer.

Now, if you open your Workforce project, you can view all of your updated assignments. If you sort by assignee, you’ll see that inspectors were only assigned to work for their specific zone. You’ll see that only inspections in Zone 2 were assigned to Jane.

Assigned tree inspections in the Workforce web interface.

You have successfully set up a Workforce project and assigned work using the ArcGIS API for Python!

Workforce for ArcGIS is evolving! We're adding offline support, refreshing the mobile apps, and enhancing the project schema. 


If you are currently using Workforce or have been waiting for new features like offline support to jump in, we'd like you to join our beta program now and help us in shaping the next releases. Click the link below to join our beta program.


Join the Workforce Beta Program

Today we released a minor, bug fix update to the Workforce web app inside of ArcGIS Online. We also took this opportunity to announce our upcoming beta for offline support. Workforce is evolving and there are a lot of exciting changes about to happen. 


Read this blog article for more details and to sign up for the beta:

Workforce for ArcGIS is evolving! 

The Workforce team has been working on some new Jupyter Notebooks that demonstrate different ways that Workforce can be automated. We're pleased to announce that the following notebooks are now available in our Workforce-Scripts Github repository:


Let us know what you think and what other examples you'd like to see in the future!

FYI, here's a great video from the Esri 2018 User Conference of the Workforce for ArcGIS: An Introduction technical session presented by Jeff Shaner and Craig Gillgrass. A nice starting point to learn about Workforce for ArcGIS.


Workforce for ArcGIS: An Introduction - YouTube 




Last week, Esri released an update to the ArcGIS API for Python (v1.4.1). Among the many updates, this release included a new API for managing projects within Workforce for ArcGIS!


We’ve had sample scripts hosted on GitHub for several years which show how to use Python to accomplish many tasks such as programmatically loading assignments from external data sources, importing and managing workers, removing completed assignments, and more. However, several of those scripts require extensive knowledge of the Workforce project schema and rules. In an effort to simplify the automation of Workforce tasks, the ArcGIS API for Python now includes a specific module for managing Workforce projects. 


This is awesome new functionality that will greatly improve and simplify your Workforce automation workflows. We plan to update the workforce-scripts repo in the coming weeks to use this new module. In the meantime, please check out this this Jupyter notebook which highlights how to use the new Workforce module.


Additional documentation about the workforce module can be found here.

Workforce is designed for an office of dispatchers and a team of mobile workers in the field. The dispatchers create and assign the work, while the mobile workers complete it. Yet you might have mobile workers who notice work that needs to be done while they are in the field, and you want those mobile workers to be able to create assignments about what they see. Creating and assigning work from the mobile app is something on our roadmap, but it isn’t possible yet. However, you can bring Collector for ArcGIS into your solution and enable mobile workers to create assignments in the field today.


To get started, identify a Workforce project that requires mobile workers to have the ability to create assignments from the field. The Workforce project, as part of its creation, made some maps. However, those maps aren’t available in Collector. This is expected: Workforce maps are excluded from Collector. It would make it too easy for a mobile worker to accidentally edit assignments outside Workforce.


To opt-in to this workflow, we’ll create a view of the assignments for the mobile workers, make a map for use in Collector, give mobile workers access, and then create assignments using Collector. Let’s see how to set this up:


1. Create a view of the assignments layer

We’ve decided we want to allow access to our assignments in Collector, but we don’t want the user to have access to all the data. To limit the fields and types of data the mobile worker sees, create a hosted feature layer view from the assignments layer (view the item page for the assignments layer and click Create View Layer). Make sure to give it a unique, descriptive name to help you remember the target audience of this view. (For details, see Create hosted feature layer views - ArcGIS Online or ArcGIS Enterprise)

NOTE: If you don’t want to limit the data the worker has access to, you don’t need to create a view of the layer. Skip this step and when creating the map add the assignments layer directly into the new map. In the map, configure the pop-up for the assignments layer the same way it is configured for the layer view here.

In your view, Set View Definition (use More Options  in the Visualization tab) to limit the data available to mobile workers:

  • Define Features to only include features with a status of “Unassigned”

  • Define Fields to only include the following fields: OBJECTID, Description, Status, Priority, Assignment Type, WorkOrder ID, Due Date, GlobalID, Location, CreationDate, Creator, EditDate, and Editor. Some of these are the fields the mobile worker needs to fill out when creating assignments, and when setting up the pop-up for the map you’ll leave these editable in Collector. The others are set for you by the ArcGIS platform and you’ll hide these when setting up the pop-up.
    Note: Your mobile workers might not need all the fields. You can choose to exclude Description, Priority, WorkOrder ID, and Due Date.


Still in the Visualization tab, Configure Pop-up  (which defines the editing experience in Collector):

  • Update the Pop-up Title to show information meaningful to workers creating assignments as this map is only for their use. For example, just use the assignment type: mobile workers might not always need to include a description so the default title wouldn’t have useful information.

  • Include only the following fields, and display them in this order (so that required fields are first): Assignment Type, Location, Description, Priority, Due Date, and WorkOrder ID. Uncheck both Display and Edit in Configure Attributes for each of the other fields to exclude them.

Update the pop-up by clicking OK at the bottom of the panel, and save your changes by clicking Save Layer.


In the Settings tab for the view, enable editing and configure editing permissions in the Feature Layer (hosted, view) Settings section:

  • In the Editing section, Enable editing.
  • Enable sync if your mobile workers need to create assignments while offline.
  • Under What kind of editing is allowed? accept the default of Add, update, and delete features.
  • Under What features can editors see? accept the default of Editors can see all features, as that could reduce the creation of duplicate assignments.
  • Under What features can editors edit? set Editors can only edit their own features.

Save your changes to the settings.


2. Create a map for Collector

On the Overview tab of your assignments layer view’s item page add the layer to a new map (use the drop-down menu for Open in Map Viewer and select Add to new map). Update your map as follows:

  • Rename the layer view to “assignments” in the Content pane.
  • Remove all the feature types and their templates other than the Unassigned feature type. The mobile workers won’t need to use them, and by removing them mobile workers won’t have to set a status and will always create unassigned assignments. To remove them, click Edit and click Manage at the bottom of the pane. Next to each feature type (other than Unassigned) click the arrow to open the menu and select Remove. Make sure to remove the feature type, and not just the templates under it, and to save your changes.
  • Include any other data in the map that the mobile workers might need to see to help them create assignments.
  • Make sure you aren’t using a vector basemap as those aren’t supported in Collector.
  • If your mobile workers need to be able to take the map offline and work without a data connection, you’ll need to make sure your map follows the guidelines for making offline maps for Collector.


3. Share the map with mobile workers

You need to share your new map and your layer view with the mobile workers who need to use them.


If you want all mobile workers in your Workforce project to be able to create assignments in Collector, share them with the group created with your Workforce project. Dispatchers in the project would also have access to the map in Collector: this may or may not be useful depending on your project.


If instead you want to provide only a subset of mobile workers with access to create assignments in Collector, create a new group (see how using either the ArcGIS Online or the ArcGIS Enterprise web site). Only add into the group mobile workers that you want using Collector to create assignments. After joining the group through the ArcGIS Online or ArcGIS Enterprise website (or after an admin adds them without their need for approval), these mobile workers can access any content shared with the group. To give them access to the content they need to create assignments, share with the group the map you created for Collector, the layer view, and any other services used by the map.


4. Create assignments in Collector

The mobile worker can open the new map in Collector and create assignments. While they won’t be able to use all the validation and user integration included in the Workforce web app, they can create assignments. Some things to keep in mind:

  • The mobile worker will need to provide an Assignment Type and Location.
  • With the view and pop-up customization, they can’t set a dispatcher ID. That’s ok, as the mobile worker might not be a dispatcher. It will be set by Workforce when the assignment is assigned through the web app.
  • Need to include an attachment? Use the camera and attach as an image.
  • Be careful if deleting assignments: it is permanent and not the same as closing them.
  • You can use a feature and Collect here to create an assignment at that feature; however, the assignment’s location field won’t be prepopulated with the feature’s pop-up title as it is in the Workforce web app.


Now you’ve got your mobile workers contributing their field findings into Workforce: work they notice in the field is recorded and ready for assignment. The back office knows what needs to be done, and work is completed according to your staff’s workflow.

We are adding new features to the Workforce for ArcGIS website and wanted to let you know that we will be releasing an update in the next couple of weeks updated today (Feb 20th, 2018).!


If you are using ArcGIS Online, this will be a seamless update to the website and your existing projects will continue to work as expected.  If you are using ArcGIS Enterprise, this will be the official release supporting ArcGIS Enterprise 10.6 and when you sign in to the MyEsri website, you will find a new setup for Windows and Linux called "Workforce for ArcGIS 18.0.1" under Apps in the Downloads section. Later this week we will update MyEsri with the ArcGIS Enterprise 10.6 setup.


New in this update...

1. Instead of adding mobile workers one-by-one, you can Add Workers from a File. A template CSV file is provided for you to populate with new workers and you can pre-populate it with existing workers if you like. 




2. Explorer for ArcGIS is available within the App Integration screen on the Advanced tab so your field workers can open Explorer at the location of a work assignment and redline on top of it. You can add Explorer integration either at the Project level or at the assignment type level.


3. In our last update, we added the ability for you to pass the ID and Location Description fields from the Assignment to the feature you create in Collector or Survey123. With this update, you can now pass the GlobalID field as well. Passing the GlobalID to a string or GUID field, you can establish a relationship between the feature collected/inspected and the assignment itself. 


4. If you have enabled the use of Esri Vector basemaps in the Map settings of your Organization, we will use the Navigation basemap when creating a new project.


In addition to these 4 updates, there are a number of stability enhancements. These updates will be coming soon are now live!

Workforce for ArcGIS is rolling out a new update, both to the Workforce web app that is used to create projects and dispatch work, as well as the mobile client apps on the iOS and Android platforms.


We updated the web app, today, Tuesday October 31st, at 9:00AM PST, with a few highly requested new features:


1. Project Owners can now deepen the integration between Workforce and Collector/Survey123 by passing the Workforce ID field and Workforce Location field to attributes they map on either their web map or Survey form. This provides a loose coupling between work assignments and the work accomplished.



2. Dispatchers have additional information about work assignments that improve their decision making process. For each assignment, the name of the dispatcher is displayed and the Date/Time of when assignments were created and when an assignment changed state is displayed. 


3. Location is important when creating and assigning work and we don't want the panel to get in your way. Now you can hide/show the panel when you want to.



In addition to these top 3 enhancements we have fixed several bugs in the Workforce web app.


November 31st Update - The ArcGIS Enterprise 10.5.1 setup that includes the web app enhancements is now available on in the Apps section.


Updates to the mobile apps for iOS and Android within their respective stores in December

Wall-mounted maps have "You are here" bubbles, and our phones use a dot on the map to show current location. But those are clearly not determined the same way: a wall-mounted map always has the same location, while your phone moves about with you. And how your location is determined varies between devices and even app to app on a single device. To best understand the location information presented for mobile workers in Workforce (both our own as a mobile worker, those of other mobile workers, and those of our mobile workers when a dispatcher) we need to understand how location is determined in Workforce.


First, let's understand what the dispatcher is seeing. The location presented for each mobile worker is simply the location the mobile worker's device is passing to Workforce. Once we understand how the mobile device is handling the mobile worker's location, we'll also know how the location the dispatcher is seeing is determined. The only catch is that the location isn't updated for dispatchers continuously; instead, the mobile worker's device updates the mobile worker's current location every minute. This is the location displayed in the web app.


When a mobile worker sees the location of another mobile worker in the same project, their view of that other mobile worker's location aligns with that the dispatcher sees. While they are receiving the same information from the project, it might not exactly match the dispatcher's view. In addition to the offset introduced by mobile workers updating their location with the Workforce project every minute, the mobile worker reading the location is also only checking for updated locations every minute, so the position seen can be up to 2 minutes old.


Now let's look at the mobile worker and their device, as that is the key to all the locations. Workforce uses the location provided by the device's location services. What exactly that means depends on the device and its setup, but what we need to know is that location services determine position information from various sources, such as GPS, cellular, Wi-Fi, and Bluetooth networks. Here is a bit more detail into location services:

  • The location reported on the mobile device depends on the information available to the device. If your device doesn't have GPS, it uses a combination of cellular and wireless signals to determine your location. If your device also doesn't have GPS or cellular service, wireless signals are used. GPS generally provides the most accurate locations, after that Wi-Fi, then cellular.
  • A more accurate location means that its margin of error is less. Your position might be identical, but if you know you have 10 meter accuracy, you know you are likely within 10 meters of the location shown. If you have 30 meter accuracy, you know you are likely within 30 meters of the position shown. In Workforce, the blue circle around your position indicates the accuracy. In the image below, Workforce believes you are between the tree and the other mobile worker (green pin). However, you might be closer to the green dot, or you might be with the other mobile worker. But it is pretty sure you are inside the bigger blue circle.
    Workforce location accuracy
  • On Android, you can choose a mode for your location (High accuracyBattery savingDevice only). This changes what is used to calculate location. High accuracy (the default) uses GPS, Wi-Fi, cellular, and other available sensors through Google's Location service to get the highest-accuracy location. Battery saving doesn't use GPS, using only Wi-Fi and cellular through Google's Location service, saving battery. Device only uses only GPS, turning off Google's Location service. Changing this value affects the location you see in the app.


One last thing to understand about location services on iOS: they never provide an accuracy less than 5 meters. Even if you are using an external GPS with sub-meter accuracy, Workforce uses location services and while the position used could be more accurate, the accuracy reported will still be 5 meters, at best. You might notice this if you look at the historical tracks of where mobile workers have been.


A mobile worker will see their position updated continuously. However, as mentioned earlier, they don't update the Workforce project with the same frequency. The project is updated every minute. Additionally, if the mobile worker sets their status to On Break or Not Working, their location is not updated to the project at all until they return to Working. And if the mobile worker didn't set their status to On Break or Not Working before shutting down Workforce, the location the project has for them might be outdated and show them still working.


Got it, you might think. But then you open Collector, and see that your location has better accuracy than you are seeing in Workforce! What is going on here? Well, it actually isn't too complicated: Collector doesn't always use the device's location services, bypassing it for the information coming straight from the location sensor (such as an external GPS). Location services are limited in the accuracy that they'll report, even if the device is getting a better accuracy from the location sensor. Because accuracy is critical in data collection, Collector uses the most accurate information available. Workforce, on the other hand, doesn't have the same requirements, so uses the most easily accessed information.


Now you should understand how Workforce determines the location of mobile workers, what factors contribute to its accuracy, why it might vary between members of the same project, and why it might vary when using other apps. Now when you see worker location and it doesn't seem they are in the right place, yet the workers insist they are, you'll be able to figure out what it is you are actually seeing and how, if necessary to your project, to improve that information.

We are excited to announce that Workforce for ArcGIS is now fully supported with ArcGIS Enterprise 10.5.1!

Workforce is a stand-alone setup that you will need to download from the MyEsri website. Once you sign in to MyEsri, navigate to the Downloads section and click on Apps. There you can quickly search for Workforce and find the installer.

Before installing Workforce on top of ArcGIS Enterprise 10.5.1, please ensure that you have configured a hosting data store as Workforce writes project contents to it.


Once installed, simply navigate to:
(where host, domain, and webadaptor are replaced by the information about your portal) to create your first Workforce project!


For more information about ArcGIS Enterprise configuration for Workforce, please read our documentation topic.

Workforce Team

Today we updated Workforce for ArcGIS on the Android platform. The 1.2.1 release addresses a number of key defects that were causing stability issues. The update is available now on Google Play and will be available soon on the Amazon App Store.

Workforce Team

Recycling, Graffiti and Tech services teams working for the City of Palmerston North New Zealand are getting a little help combatting Fly Tipping (Illegal Dumping) by using Workforce and Survey123. Read more about what they are doing here Location Based To Do Lists – Anything Mapping


The Workforce team is excited to announce that the Android version of the Workforce mobile app is now available within Google Play and the Amazon App Store.

Workforce on your Android device integrates seamlessly with Navigator for ArcGIS, Collector for ArcGIS and Survey123 so that you can build end-to-end workflows on both the Android and iOS platforms.

NOTE: If you are an existing beta tester of Workforce through the store, please note that we will disable beta testing on Friday Feb 17th. We recommend that you remove yourself as a beta tester now and download the released version.

For more information about Workforce for ArcGIS, please visit our documentation site.

Workforce team

We released a minor update to the Workforce for ArcGIS web app inside of ArcGIS Online today (Jan 31st, 2017). It includes a few focused enhancements that improve the way that you dispatch assignments to mobile workers. Here are a few highlights worth mentioning.

Disable Clustering

Clustering can be an extremely useful method for visualizing work assignments, especially when viewed at a small scale. However you have asked us to provide the flexibility to turn off clustering so that dispatchers can see individual assignments even when multiple assignments are visible in a small area. To provide the utmost flexibility, this is a subtle switch available to all Dispatchers directly within the web app. You can now turn on/off clustering when you see fit.

Filtering Assignment Types and Priorities

When creating assignments using the web app we have added some targeted enhancements that help improve productivity. Using the keyboard can be much faster than using the mouse and if you haven’t yet discovered, you can use tab and enter to move quickly through the experience of filling out the new assignment form. To help with this process, you can filter long assignment lists by typing characters that will get you to the type you want to set quickly. We added this same ability to the Priority drop down as well.

Worker Thumbnails

Take that favorite selfie and making it your user thumbnail pays off in Workforce. It can be difficult to associate the worker on the map with the worker in the list but by adding the worker’s thumbnail image into the icon in both helps Dispatchers make that mental leap.

Assign to the closest Mobile Worker

When picking the Mobile Worker that you want to assign work to, it can be quite useful to see how far away they are from the assignment you want to give them. A subtle addition into the web app is a recognition of distance away.

For a list of all additions to the web app, please read our What’s New.

So What’s Next??

You might be wondering when Workforce will be supported with ArcGIS Enterprise 10.5?
We are busy working on this right now. Coming either at the end of March or early in April we will provide a standalone setup that lets you install the Workforce web app on top of your 10.5 Portal install. Workforce projects, maps and services will be written to the ArcGIS Data Store.

How about Android? Are you going to release it soon?
Well yes we are! We are finalizing certification right now and look for an update coming soon to Google Play and the Amazon App Store!

We have a lot planned for 2017! Please stay tuned for announcement of future updates as we move into the spring!

Workforce Dev Team