Outbound Message Integrations

Publishes in Mobile dev and Solution Center

ArcFM Mobile can make calls to external applications, and send selected assets and locations to other applications on mobile devices using URI scheme messages, These outbound messages allow you to activate external apps and pass them the attributes of a selected feature. External apps can be off-the-shelf products, such as Survey123 for ArcGIS, or custom apps and websites.

Take it for a drive! (The link opens/switches to the Solution Center app and accesses the Operational Maps tab.)
  1. On the Operational Maps tab, select a map.
  2. Click the Outbound Messages tab.
  3. Click in the iOS box and start typing or paste your .json from another source.

By default, ArcFM Mobile enables navigation by integrating with Windows Maps on Windows devices, and with Apple Maps on iPads. That being said, for iPads you have the option of integrating with Navigator for ArcGIS instead.

To provide users a way to navigate to a selected map location, replace the existing .json for navigation with the following:

[
   {
    "Name": "Navigate",
    "UriScheme": "arcgis-navigator",
    "BaseUri": "?stop=[[lat]],[[long]]",
    "ApplicableWithoutFeatures": true,
    "ApplicableWithTraceCustomerCount": true,
    "ApplicableWithFeatures": false
   }
]

The lines above are defined as follows:

  • Name: external app being called.

  • UriScheme: the app identifier.

  • BaseUri: a placeholder for the list of per-item URI parts. Each URI part is defined by PerItemUriPart. The value of PerItemDelimiter is placed between each URI part. Using the example above and the Tip below, you’ll see that the ampersand & is placed between each URI part.

  • ApplicableWithoutFeatures: when set to true, this action enables a tool, after clicking the Tasks button, that sends latitude/longitude information of a selected map location to another application.

  • ApplicableWithTraceCustomerCount: when set to true, this action enables a tool, after clicking the Tasks button, that sends an export of affected customers from isolation trace results.

  • ApplicableWithFeatures: when set to true, this action sends information about features identified using ArcFM Mobile ’s Identify tool to another application.

To provide users a way to navigate to a pole location using ArcGIS Navigator, format your .json in the following way:

[
  {
    "Name": "Drive To",
    "UriScheme": "arcgis-navigator",
    "BaseUri": "?[[items]]",
    "PerItemUriPart": "stop=[[lat]],[[long]]&stopname=[[displayName]]",
    "PerItemDelimiter": "&",
    "ApplicableWithoutFeatures": false,
    "ApplicableWithTraceCustomerCount": true,
    "ApplicableWithFeatures": true,
    "ApplicableLayers": [
       "Support Structure"
    ]
  }
]

ApplicableLayers, as seen at the bottom of the example directly above, is defined as features to be provided to another application. If this is null or empty, then it applies to all features so anything identified is provided. The layers (Support Structure in the example above) must match layer names of the operational map service.

Next, if you want to enable users to perform inspections on a selected pole with Survey123 for ArcGIS, format your .json as follows (replace the itemID with the survey ID you created in Survey123):

TIP: The pole_number= statement below identifies the attribute in the selected pole that you want copied in the survey.

[
  {
    "Name": "Inspect Pole",
    "UriScheme": "arcgis-survey123",
    "BaseUri": "?itemID=5d5dd04f18b2468da806c07aa5f60f2b&[[items]]",
    "PerItemUriPart": "field:pole_number=[[attribute:FACILITYID]]&center=[[lat]],[[long]]",
    "PerItemDelimiter": ";",
    "ApplicableWithoutFeatures": false,
    "ApplicableWithTraceCustomerCount": true,
    "ApplicableWithFeatures": true,
    "ApplicableLayers": [
      "Support Structure"
    ]
  }
]

To enable users to perform the same pole inspection by tapping a location in the map instead of selecting a pole, format your .json as follows:

[
  {
    "Name": "Inspect Pole",
    "UriScheme": "arcgis-survey123",
    "BaseUri": "?itemID=5d5dd04f18b2468da806c07aa5f60f2b&center=[[lat]],[[long]]",
    "PerItemUriPart": null,
    "PerItemDelimiter": null,
    "ApplicableWithoutFeatures": true,
    "ApplicableWithTraceCustomerCount": true,
    "ApplicableWithFeatures": true,
    "ApplicableLayers": null
  }
]

To provides users a way to navigate to a pole location using Google Maps, format your .json as follows:

[
  {
    "Name": "Navigate with Google Maps",
    "UriScheme": "https",
    "BaseUri": "www.google.com/maps/dir/?api=1&[[items]]",
    "ApplicableWithoutFeatures": false,
    "ApplicableWithTraceCustomerCount": true,
    "PerItemUriPart": "destination=[[lat]],[[long]]",
    "PerItemDelimiter": ";",
    "ApplicableWithFeatures": true,
    "ApplicableLayers": [
      "Pole"
    ]
  }
]

To provide users a quick way to email a customer outage notification for an identified service point, format your .json as follows:

[
  {
    "Name": "Email Customer Info",
    "UriScheme": "mailto",
    "BaseUri": ":supervisor@myutility.com?subject=Customers%20Out%20Of%20Power&body=?[[items]]",
    "PerItemUriPart": "[[attribute:FACILITYID]]",
    "PerItemDelimiter": ",",
    "ApplicableWithoutFeatures": "false",
    "ApplicableWithTraceCustomerCount": true,
    "ApplicableWithFeatures": "true",
    "ApplicableLayers": [
      "Service Point"
    ]
  }
]

To provide users with a quick way to email information regarding the number of customers affected based on a trace they perform, format your .json as follows:

[
  {
    "Name": "Email Affected Customers",
    "UriScheme": "mailto",
    "BaseUri": "supervisor@myutility.com?subject=Affected%20Customer%20Info&body=[[items]]",
    "PerItemUriPart": "[[displayName]]",
    "PerItemDelimiter": "%0D%0A",
    "ApplicableWithFeatures": "false",
    "ApplicableWithTraceCustomerCount": true,
    "ApplicableWithoutFeatures": "false",
    "ApplicableLayers": []
  }
]

To provide users a way to email information regarding the service addresses that are affected based on a trace they perform, format your .json as follows:

[
  {
    "Name": "Email Affected Service Addresses",
    "UriScheme": "mailto",
    "BaseUri": "supervisor@myutility.com?subject=Affected%20Customer%20Info&body=[[items]]",
    "PerItemUriPart": "Account ID:[[attribute:ACCOUNTID]], ADDRESS:[[attribute:ADDRESS1]], [[attribute:CITY]], [[attribute:STATE]] [[attribute:ZIPCODE]]",
    "PerItemDelimiter": "%0D%0A",
    "ApplicableWithFeatures": "false",
    "ApplicableWithTraceCustomerCount": true,
    "ApplicableWithoutFeatures": "false",
    "ApplicableLayers": []
  }
]
IMPORTANT: The feature or object class that is provided to another application when setting ApplicableWithTraceCustomerCount to true is determined by the Customer Counting Method as configured for Tracing in the Solution Center. If your customer counting method is set to loadpoints, your Tasks tools will provide the feature that is configured as your loadpoint (e.g., Service Point). If your customer counting method is set to related records, your Tasks tools will provide the feature or object class that is configured in the Solution Center (e.g., Service Address). If your customer counting method is set to None, the Tasks button does not display.
IMPORTANT: The feature or object class that is shared when setting ApplicableWithTraceCustomerCount to true is determined by the Customer Counting Method as configured for a given operational map. If your customer counting method is set to loadpoints, your share tools will share the feature that is configured as your loadpoint (e.g., Service Point). If your customer counting method is set to related records, your share tools will share the feature or object class that is configured in the Solution Center (e.g., Service Address). If your customer counting method is set to None, the Share tool will not display.

TIP: You can configure up to 8 outbound messages in ArcFM Mobile for Windows. We do not support additional pages of tools.

The following codeblock shows how the iOS box should appear with all the above configurations:

IMPORTANT: Each configuration section must be separated by a comma.

[
  {
    "Name": "Drive To",
    "UriScheme": "arcgis-navigator",
    "BaseUri": "?stop=[[lat]],[[long]]",
    "ApplicableWithFeatures": false,
    "ApplicableWithoutFeatures": true
  },
  {
    "Name": "Drive To",
    "UriScheme": "arcgis-navigator",
    "BaseUri": "?[[items]]",
    "PerItemUriPart": "stop=[[lat]],[[long]]&stopname=[[displayName]]",
    "PerItemDelimiter": "&",
    "ApplicableWithFeatures": true,
    "ApplicableWithoutFeatures": false,
    "ApplicableLayers": [
      "Support Structure"
    ]
  },
  {
    "Name": "Inspect Pole",
    "UriScheme": "arcgis-survey123",
    "BaseUri": "?itemID=5d5dd04f18b2468da806c07aa5f60f2b&[[items]]",
    "PerItemUriPart": "field:pole_number=[[attribute:FACILITYID]]&center=[[lat]],[[long]]",
    "PerItemDelimiter": ";",
    "ApplicableWithFeatures": true,
    "ApplicableWithoutFeatures": false,
    "ApplicableLayers": [
      "Support Structure"
    ]
  },
  {
    "Name": "Inspect Pole",
    "UriScheme": "arcgis-survey123",
    "BaseUri": "?itemID=5d5dd04f18b2468da806c07aa5f60f2b&center=[[lat]],[[long]]",
    "PerItemUriPart": null,
    "PerItemDelimiter": null,
    "ApplicableWithFeatures": false,
    "ApplicableWithoutFeatures": true,
    "ApplicableLayers": null
  },
  {
    "Name": "Email Customer Info",
    "UriScheme": "mailto",
    "BaseUri": ":supervisor@myutility.com?subject=Customers%20Out%20Of%20Power&body=?[[items]]",
    "PerItemUriPart": "[[attribute:FACILITYID]]",
    "PerItemDelimiter": ",",
    "ApplicableWithFeatures": "true",
    "ApplicableWithoutFeatures": "false",
    "ApplicableLayers": [
      "Service Point"
    ]
  },
  {
    "Name": "Email Affected Customers",
    "UriScheme": "mailto",
    "BaseUri": "supervisor@myutility.com?subject=Affected%20Customer%20Info&body=[[items]]",
    "PerItemUriPart": "[[displayName]]",
    "PerItemDelimiter": "%0D%0A",
    "ApplicableWithFeatures": "false",
    "ApplicableWithTraceCustomerCount": true,
    "ApplicableWithoutFeatures": "false",
    "ApplicableLayers": []
  },
  {
    "Name": "Email Affected Customers",
    "UriScheme": "mailto",
    "BaseUri": "supervisor@myutility.com?subject=Affected%20Customer%20Info&body=[[items]]",
    "PerItemUriPart": "[[displayName]]",
    "PerItemDelimiter": "%0D%0A",
    "ApplicableWithFeatures": "false",
    "ApplicableWithTraceCustomerCount": true,
    "ApplicableWithoutFeatures": "false",
    "ApplicableLayers": []
  },
  {
    "Name": "Email Affected Service Addresses",
    "UriScheme": "mailto",
    "BaseUri": "supervisor@myutility.com?subject=Affected%20Customer%20Info&body=[[items]]",
    "PerItemUriPart": "Account ID:[[attribute:ACCOUNTID]], ADDRESS:[[attribute:ADDRESS1]], [[attribute:CITY]], [[attribute:STATE]] [[attribute:ZIPCODE]]",
    "PerItemDelimiter": "%0D%0A",
    "ApplicableWithFeatures": "false",
    "ApplicableWithTraceCustomerCount": true,
    "ApplicableWithoutFeatures": "false",
    "ApplicableLayers": []
   }
]

TIP:
  • For more information about the Navigator for ArcGIS URL scheme, see the documentation on GitHub.

  • For more information about integrating with Survey123, see Esri’s reference documentation.

QR Code is a registered trademark of DENSO WAVE INCORPORATED in Japan and other countries.

Was this helpful?