FME Version
Introduction
Updating, inserting, and deleting features in utility network data for Esri ArcGIS Portal Feature Services is a crucial aspect of maintaining accurate and up-to-date information. Managing changes in the utility network data requires a clear understanding of the available methods and tools within FME.
When comparing the original and revised data between File Geodatabase and ArcGIS Portal Feature Service using a ChangeDetector transformer, data standardization ensures accuracy. This means that attribute names, types, and widths must match between the two sources for the ChangeDetector to be effective. Any modifications made during the standardization process must be rectified, and the data must conform to the destination's schema definition before writing.
This tutorial will focus on the techniques and considerations involved in creating, updating, and deleting features in the utility network data, ensuring that the desired modifications are applied correctly and efficiently.
Creating, Updating, and Deleting Features in FME
- You can create and update features directly in FME using the appropriate transformers and writers.
- Important Note: You cannot directly delete features in FME.
- To delete features, you need to select the specific features you want to delete and set the Feature Operation option for the writer to "Delete" for those selected features.
Configuring Feature Operation for Writer
To make actual changes in the utility network data, you need to configure the feature operation correctly. The feature operation determines how the features will be processed and applied to the utility network. These feature operations can be categorized into individual methods and bulk methods:
Individual Methods:
- Update: Modifying existing features in the utility network individually.
- Insert: Adding new features to the utility network one at a time.
- Delete: Removing features from the utility network individually (simulated in FME by setting the data handling option to "Delete").
Bulk Methods:
- fme_db_operation: Dynamically insert, update, or delete features in bulk based on the value set for this attribute column.
- Upsert: A combination of inserting new features and updating existing features based on a match condition, allowing for bulk processing.
Utility Network Databases are often not configured for appending data. Generally speaking, UPSERT is not a viable option for utility network data
Configuring the feature operation ensures that the desired changes are applied correctly to the utility network data. For an in-depth description of feature operations, please consult this documentation.
It is recommended to use the fme_db_operation attribute if you are performing multiple feature operations, such as updating, inserting, and deleting, within a single writer. By utilizing the fme_db_operation attribute, you can streamline the process and handle all the feature operations using a single writer, enabling bulk processing. In contrast, not using the fme_db_operation attribute will limit you to performing only one feature operation per writer, requiring you to add multiple writers to achieve the same functionality as using fme_db_operation, which can be less efficient for individual feature operations.
Limitations: Updating Features in Portal Feature Service for Utility Network
There is a limitation when updating features in a utility network using an Esri ArcGIS Portal Feature Service writer. FME currently sends all the attributes of a feature when updating features, even when modifications have not been made to all attributes. Due to this behavior, subnetwork controllers may prevent making updates to certain features as edits to Asset Group and Asset Type are prevented by assigned subnetwork controllers.
To avoid this issue, it is recommended that Asset Group and Asset Type attributes be excluded from the feature before the features are passed on to the writer. You can exclude Asset Group and Asset Type by adding an AttributeManager or AttributeRemover. By removing these attributes, the FME writer will not attempt to update them, thus preventing the error. To optimize performance, you may want to select GLOBALID, and only the desired attributes need to be updated.
If you want to modify values for Asset Group and Asset Type, you must either disable or remove subnetwork controller assignments, update the features, and then enable or set a subnetwork controller assignment. At the moment, you can disable and enable subnetwork controllers using ArcGIS REST Services and remove and set subnetwork controllers using ArcGIS Pro. Similarly, network topology can be disabled and enabled using both ArcGIS REST Services and ArcGIS Pro.
To automate the process of updating, inserting, and deleting features, we recommend using ArcGIS REST Services to disable and enable subnetwork controllers and network topology within the workspace.
Additionally, when modifying values for Asset Group and Asset Type, ensure that you are passing the code of the coded domain to the Writer.
Requirements
- FME Form installed and licensed
- Esri ArcGIS Pro or ArcGIS Enterprise installed and licensed
- Basic understanding of utility network data structure and dataset, FME transformers, and FME and geodatabase
- Utility Network-configured ArcGIS Portal Feature Service item
- Complete the following FME & Esri ArcGIS Utility Network Tutorials:
Sources
- Writing_UID_Part1.fmw contains the completed workspace for this part of tutorial. Portal URL, Credentials, Feature Service, Layers/Feature Types, and Branch Versioning for Portal Reader and will need to be re-configured to make the workspace usable.
- Writing_UID_Part2.fmw contains the completed workspace for both individual and bulk methods. Portal URL, Credentials, Feature Service, Layers/Feature Types, and Branch Versioning for Reader and Writers, and Dataset (path location) and Tables for Geodatabase Reader will need to be re-configured to make the workspace usable.
- Writing_UID_Part3.fmw contains the completed workspace for both individual and bulk methods. Portal URL, Credentials, Feature Service, Layers/Feature Types, and Branch Versioning for Reader, Dataset (path location) and Tables for Geodatabase Reader, and Dataset (path location) for Writers will need to be re-configured to make the workspace usable.
Step-by-Step Instructions
Part 1: Loading Workspace that is Configured to Retrieve Updated, Inserted, and Deleted Features
1. Load the Workspace that Retrieves Updated, Inserted, and Deleted Features from ArcGIS Utility Network Data
Open FME Workbench and configure the workspace for retrieving updated, inserted, and deleted features from a File Geodatabase, ArcSDE Geodatabase, and/or Esri ArcGIS Portal Feature Service. If you are using a workspace that detects change between File/ArcSDE to Portal Feature Service and have rectified attributes to increase the accuracy of the ChangeDetector transformer, you must rectify attributes of the output of ChangeDetector to match the schema of the desired Feature that you are writing to.
Alternatively, you can open FME Workbench and load the workspace from the source that has been prepared for this tutorial. This workspace should already have the updated, inserted, and deleted features retrieved using the ChangeDetector transformer. However, you cannot run this workspace due to the portal feature service configuration for this workspace unless you specify your own data sources. This workspace will be used for this tutorial.
2. Review the Workspace
If you are using the workspace from the source, to rectify the data sources and make the workspace runnable, you need to configure the reader parameters to match your specific data sources:
- For the ArcGIS Portal Feature Service reader, update the "Dataset" parameter to point to your organization's ArcGIS Portal URL and specify the appropriate feature service.
- For the File Geodatabase or ArcSDE Geodatabase reader, update the "Dataset" parameter to specify the file path location or database connection details for your utility network data.
Ensure that the layer names and attribute names in the workspace match the corresponding names in your data sources. If necessary, use transformers like the BulkAttributeRenamer and AttributeManager to align the attribute names and values between the original and revised data sources.
Part 2: Writing to Portal Feature Service
Individual Method
1. Add an Esri ArcGIS Portal Feature Service Writer
Continuing in the same workspace as Part 1, specifically, Writing_UID_Part1, add a writer to the canvas.
In the parameters, set the following:
A. Set the Format as: Esri ArcGIS Portal Feature Service
B. Specify your organization’s Esri Portal URL for the Dataset.
C. Set the Layer Definition as: Import from Dataset…
D. Click on “Parameters…”.
In the Esri ArcGIS Portal Feature Service Parameters dialog:
A. Click on the ellipsis next to Selected Feature Service.
-
- Select the corresponding dataset to the reader, for this tutorial, Water Device will be selected
B. Enable branch versioning.
C. Set the reconcile to: Yes
D. Set the Post to: No
E. Click on “OK” twice to finish the parameter.
2. Edit Import Writer Feature Types
In the Import Writer Feature Types dialog:
A. Click on “Parameters”.
B. Click on the ellipsis next to Layers and select the layer that corresponds to the reader.
-
- For this tutorial, Water Device will be selected.
C. Specify Feature Per Request to 1
-
- Adjust the feature request on your own discretion, 1 ensures that the writer will not experience HTTP timeout.
D. Click on “OK”.
Repeat these Steps 1 to 2 two more times.
3. Connecting the Transformers to the Writer Feature Types
From the AttributeManager and TestFilter,
A. Connect the output port from AttributeManager, that is connected to UPDATE port, to one of the writer feature types
B. Connect the INSERT output port from TestFilter to one of the writer feature types
C. Connect the DELETE output port from TestFilter to one of the writer feature types
Your workspace should look similar to this:
4. Edit Feature Type Parameter
For each of the writer feature types,
In the Feature Type dialog:
A. Set the Feature Operation to the corresponding output
-
- Set Feature operation for the writer connected to AttributeManager port to Update.
- Set Feature operation for the writer connected to INSERT port to Insert.
- Set Feature operation for the writer connected to DELETE port to Delete.
5. Save and Run the Workspace
Now, save and run the workspace. View the output data in Esri ArcGIS Pro to see if it was properly written to the portal feature service.
To verify that the features have been successfully updated, inserted, or deleted, you can use the Select By Attribute tool in Esri ArcGIS Pro. Open the attribute table of the feature class and use the Select By Attribute tool to query the GlobalID field for a specific feature that you know has been updated, inserted, or deleted. If the feature is found (for updated or inserted features) or not found (for deleted features) with the expected attribute values, it confirms that the FME workspace has successfully performed the desired operation on the feature.
Bulk Method
1. Add an Esri ArcGIS Portal Feature Service Writer
Continuing in the same workspace as Part 2, add a writer to the canvas.
In the parameters, set the following:
A. Set the Format as: Esri ArcGIS Portal Feature Service
B. Specify your organization’s Esri Portal URL for the Dataset.
C. Set the Layer Definition as: Import from Dataset…
D. Click on “Parameters…”
In the Esri ArcGIS Portal Feature Service Parameters dialog:
A. Click on the ellipsis next to Selected Feature Service.
-
- Select the corresponding dataset to the reader.
- For this tutorial, Water Device will be selected.
B. Enable branch versioning.
C. Set the reconcile to: Yes
D. Set the Post to: No
E. Click on “OK” twice to finish the parameter.
2. Edit Import Writer Feature Types
In the Import Writer Feature Types dialog:
A. Click on “Parameters”
B. Click on the ellipsis next to Layers and select the layer that corresponds to the reader
-
- Select the corresponding dataset to the reader, for this tutorial, Water Device will be used
C. Specify Feature Per Request to 1.
- Adjust the feature request on your own discretion, 1 ensures that the writer will not experience HTTP timeout.
D. Click on “OK”.
3. Connecting the Transformers to the Writer
From the AttributeManager and TestFilter,
A. Connect all the outputs, Output, Insert, and Delete, to the writer feature type
Your workspace should look similar to this:
4. Edit Feature Type Parameter
For the writer feature type,
In the Feature Type dialog:
A. Set the Feature Operation to: fme_db_operation
5. Save and Run the Workspace
Now, save and run the workspace. View the output data in Esri ArcGIS Pro to see if it was properly written to the portal feature service.
Part 3: Writing to File/ ArcSDE Geodatabase
The process of writing to file/ArcSDE Geodatabase is essentially the same as writing to Portal Feature Service. It is recommended to specify a template file geodatabase when writing to a file geodatabase. By using a template, you can create multiple copies of the geodatabase instead of overwriting the existing one. This approach provides redundancy and offers several benefits:
- Data Archive and Backup
- Versioning
- Testing and experimentation
Individual Method
1. Add an Esri Geodatabase File Geodb Writer
Continuing in the same workspace as Part 1, specifically Writing_UID_Part1, add a writer to the canvas.
In the parameters, set the following:
A. Set the format as: Esri Geodatabase (File Geodb).
B. Specify the file path and name you want to save to by clicking on the ellipsis next to Dataset.
C. Set the Feature Class or Table Definition as Import from Dataset…
D. Click on "Parameters...".
In the Esri File Geodatabase (File Geodb) Parameters dialog:
A. Enable Overwrite Existing Geodatabase and select your File geodatabase that contains your utility network data as Template File Geodatabase.
- For this tutorial, WaterDistribution_UtilityNetwork.gdb will be selected.
B. Expand Advanced and set "yes" for Preserve GlobalID.
C. Click on "OK" and “OK” again, to select feature type layers to write to.
2. Edit Import Writer Feature Types
In the Import Writer Feature Types dialog:
A. Click on “Parameters”
B. Click on the ellipsis next to Layers and select the layer that corresponds to the reader.
-
- For this tutorial, UtilityNetwork/WaterDevice will be selected.
C. Specify Feature Per Request to 1.
-
- Adjust the feature request on your own discretion, 1 ensures that the writer will not experience HTTP timeout.
D. Click on “OK”.
Repeat these Steps 1 to 2 two more times.
3. Connecting the Transformers to the Writer Feature Types
From the AttributeManager and TestFilter,
A. Connect the output port from AttributeManager, which is connected to UPDATE port, to one of the writer feature types
B. Connect the INSERT output port from TestFilter to one of the writer feature types
C. Connect the DELETE output port from TestFilter to one of the writer feature types
Your workspace should look similar to this:
4. Edit Feature Type Parameter
For each of the writer feature types,
In the Feature Type dialog:
Set the Feature Operation to the corresponding output
A. Set Feature operation for the writer connected to AttributeManager port to Update.
a. Specify GLOBALID for Match Columns.
B. Set Feature operation for the writer connected to INSERT port to Insert.
a. Specify GLOBALID for Match Columns.
C. Set Feature operation for the writer connected to DELETE port to Delete.
a. Specify GLOBALID for Match Columns.
5. Save and Run the Workspace
Now, save and run the workspace. View the output data in Esri ArcGIS Pro to see if it was properly written to the File/ ArcSDE Geodatabase.
Bulk Method
1. Add an Esri Geodatabase File Geodb Writer
Continuing in the same workspace as Part 3, add a writer to the canvas.
In the parameters, set the following:
A. Set the format as: Esri Geodatabase (File Geodb)
B. Specify the file path and name you want to save to by clicking on the ellipsis next to Dataset.
C. Set the Feature Class or Table Definition as: Import from Dataset…
D. Click on "Parameters...".
In the Esri File Geodatabase (File Geodb) Parameters dialog:
A. Enable Overwrite Existing Geodatabase and select your File geodatabase that contains your utility network data as Template File Geodatabase.
-
- For this tutorial, WaterDistribution_UtilityNetwork.gdb will be selected.
B. Expand Advanced and set "yes" for Preserve GlobalID.
C. Click on "OK" and “OK” again, to select feature type layers to write to.
2. Edit Import Writer Feature Types
In the Import Writer Feature Types dialog:
A. Click on “Parameters”
B. Click on the ellipsis next to Layers and select the layer that corresponds to the reader
- For this tutorial, UtilityNetwork/WaterDevice will be selected.
C. Specify Feature Per Request to 1.
- Adjust the feature request on your own discretion, 1 ensures that the writer will not experience HTTP timeout.
D. Click on “OK”.
3. Connecting the Transformer to the Writer Feature Type
From the AttributeManager and TestFilter,
A. Connect all the outputs to the writer feature type
Your workspace should look similar to this:
4. Edit Feature Type Parameter
For the writer feature type,
In the Feature Type dialog:
A. Set the Feature Operation to: fme_db_operation
B. Specify GLOBALID for Match Columns.
5. Save and Run the Workspace
Now, save and run the workspace. View the output data in Esri ArcGIS Pro to see if it was properly written to the File/ ArcSDE Geodatabase.
Troubleshooting
Error Identification when Updating/ Inserting/ Deleting Features into ArcGIS Portal Feature Service
Solution: Identify the exact error from ArcGIS Server Manager and/or Fiddler
At the moment, the FME Translation Log only informs about the last error and does not provide comprehensive error information. By following these steps, you can identify the exact error message and gain insights into why the feature update, insert, or delete operation is failing. This information will be crucial for troubleshooting and resolving the issue.
ArcGIS Server Manager:
Start by accessing the logs in ArcGIS Server Manager (https://(Your Org ArcGIS Portal URL).com/server/manager/). Log in and navigate to the "Logs'' tab. Set the appropriate parameters for querying log messages and change the level of detail at which the log messages are generated. Query the log messages and look for any entries related to your operation. These logs can provide detailed error messages and codes that can help pinpoint the error.
Fiddler:
Use Fiddler to capture and analyze the HTTP traffic between your application and the server. Download and install Fiddler, then open it and configure it to capture traffic that FME (Feature Manipulation Engine) is sending to the Feature Service REST API. Reproduce the error by performing the feature operation in your application. Fiddler will capture the HTTP requests and responses exchanged. Locate the request associated with your operation and inspect the request and response details in Fiddler. Look for any error messages, status codes, or response bodies that indicate the nature of the problem.
Once you have identified the request in Fiddler, you can extract it and send it directly to the Feature Service REST API endpoint on ArcGIS Portal Feature Service. This allows you to isolate the request and test it independently of FME, helping you determine if the issue lies within the request itself or if it's specific to the interaction between FME and the Feature Service.
Esri ArcObjects Error Number '-2147216556'
When writing to a File Geodatabase, you may encounter this error. Update the writer and set Transaction Type to Edit Session. For more information, consult this documentation.
FMEException: 928239 - Generic Error for Writer when ArcGIS REST API returns '400'
This error can be raised when:
- Subnetwork Controller/ Network Topology Violation: Modifying Values that the subnetwork controller is preventing edits to or that violates Network's Topology.
- Invalid Value for Attribute data type: Passing invalid values such as String value to an attribute with the data type set as Integer.
- Mismatch between GLOBALID and OBJECTID: Updating features where there is a mismatch between GLOBALID and OBJECTID between the values passed to FME Writer and what is available in the Feature Service
For the subnetwork controller, as mentioned in the limitation section above, if you are not modifying values for Asset Group and Asset Type, remove these attributes using AttributeManager or AttributeRemover. To modify Asset Group and Asset Type values, you must first disable/remove the subnetwork controller. This can be done using either ArcGIS REST Services (refer to this documentation) or ArcGIS Pro (refer to this documentation).
If you want to modify values that violate network Topology, you can temporarily disable using either ArcGIS REST Services (refer to this documentation) or ArcGIS Pro (refer to this documentation).
Remember to re-enable/re-create the subnetwork controller assignments and network topology after completing your database operations to maintain network integrity.
For invalid attribute data type errors, ensure that the values being passed to the Writer conform to the data types defined in the destination schema. For example, if an attribute's data type is defined as an Integer in the schema definition, make sure you are not passing non-integer values to it.
Depending on how the utility network dataset is configured, the Portal Feature Service Writer uses either GLOBALID or OBJECTID. As indicated in the ArcGIS REST services documentation, edits to features require either GLOBALID or OBJECTID for matching. If you attempt to update or delete features without using GLOBALID or OBJECTID, the ArcGIS REST Service may return a '400' error due to its inability to match columns, resulting in FMEException 928239.
Other FME and Esri ArcGIS Errors
If you encounter FME and Esri ArcGIS, this documentation is a comprehensive resource containing various troubleshooting solutions.
Data Attribution
Water Distribution Utility Network Foundation data is copyright 2024 Esri. Licensed under Apache-2.0. Source: ArcGIS Solutions.
Comments
6 comments
Hi Dave Choi
Thanks for the detailed breakdown here! I have more questions about FMEException: 928239
When I'm updating my Electric Line or Electric Junction layers on the feature service, I don't come across this issue at all. However, when updating Associations and Electric Device, I do.
If I'm making updates on a nightly/automated basis, surely the solution can't be to remove all of the subnetwork controller assignments, make my edits, and then re-create all of my subnetwork controllers, right? Are we really discussing deleting and re-creating every single subnetwork controller assignment through the feature service? If so, how would someone even do that? I get you can call disable and enable controller through the arcpy python library, but to make edits on a branch versioned dataset, it needs to be done through the feature service, and the only layer exposed in the feature service is the subnetworks table, not the actual controller table?
It just seems like a lot. More curiously, if I disable network topology before trying to make these edits, I am still getting the same errors. Any advice?
I apologize for any confusion in my previous version of the article regarding topology and subnetwork controllers. The core issue occurs because when FME tries to update features, it attempts to update all attributes that are included on the feature when it's passed to the writer. I have updated the article to better explain this. Disabling subnetwork controllers or network topology should only be necessary if updating the Asset Group or Type.
If you are not updating the Asset Group or Type, you can remove those attributes from the feature in FME before its passed to the writer. Otherwise, this error will be hit which is expected. If you do this same operation in ArcGIS, the same error will be hit. If you do need to update these attributes, I suggest removing subnetwork controller assignments specifically pertaining to those feature types (layers) and then recreating them afterwards, though this would prevent automated updates.
Hi Dave Choi
Thanks for your response and edits.
Your new post makes a lot more sense, but I'm still experiencing that same FMEException beyond this set of circumstances. I've confirmed the following on my end:
Any further ideas? I need to be able to change the asset group and asset type of devices, so removing those attributes for all devices is not an option, but it's still strange that this feature in particular is causing the exception. I suspect it has something to do with the GLOBALIDs changing, because that attribute is being changed in the Associations table as well, and is immediately failing to insert or delete any new or removed association records.
I am using a combined writer using the fme_db_operation attribute resulting from my ChangeDetector transformer - do you think I could resolve this issue if I broke it into different writers? More importantly, is there a way to configure the writer to update based on a column that's not the GLOBALID? I know when writing to a file geodatabase with an UPDATE operation, you can specify the match column, but it looks like you can only do that for UPSERT operations on the Feature Service writers, and UPSERT doesn't sound like the right operation for Utility Network data.
Thanks for your support!
EDIT: I have doubts about my own GLOBALID idea because if I delete the AG and AT columns, the record updates successfully regardless of the global changing?
Hi Max Cushner
I appreciate your detailed investigation and findings. To further pinpoint the root cause of this issue, I suggest trying these troubleshooting steps:
1. First, attempt to edit the Switch's attributes manually in ArcGIS Pro. If this works successfully, use Fiddler Classic to:
2. Using the REST request captured from FME, try to replicate the same edits through the ArcGIS REST Services Web UI.
Let me know if you have tried these approaches, I'm interested in what you discover. I would also suggest opening a support ticket to further investigate and determine what's preventing these Switch edits. This would help document the behavior for future reference and allow us to incorporate the findings into this article.
Thank you for your patience and thorough investigation of this issue. Looking forward to your response!
Hi Dave Choi
I've done a lot of digging and was able to resolve my issue. Hopefully my findings will prove useful to the documentation and anyone else who comes across this issue.
In short, FMEException 928239 has nothing to do with subnetworks in most cases. That is the error that is returned by the FME API when the ArcGIS REST API returns a code 400 error.
Using Fiddler, I was able to experiment with the features giving me consistent errors, and with new features I could consistently introduce errors into. In each of these cases, the REST API was returning a 400 error.
For my Electric Device issue, I was using ChangeDetector to compare a revised workspace to the feature service. Because I wasn't preserving globalIDs on this test database (not within FME, just didn't preserve when creating it for testing), I had to set the Update key in ChangeDetector to assetid, rather than globalid. When i added the correct revised dataset that DID preserve globals, I never changed this setting. This lead to a situation where all of my match columns properly identified that this asset should be updated, rather than inserted or deleted, but when it went to update, it was looking for an existing globalid on the feature service that didn't exist, and therefore returned a 400 error with the description “object is missing”. Note that this description can only be found by querying the JSON response in Fiddler, and is not translated back to FME at all. This could be a great product improvement if I can submit a ticket for it.
The larger issue, it seems, is that between the FME API and the REST API, for all writers writing to a Portal feature service, the match key is always the globalid. When writing to a file geodatabase or something, there is usually a place to specify a match column for update operations, but that options seems to only be available when using UPSERT on a portal writer, and i'm not convinced that would actually change how the API behaves. I'd be interested to see if the FME Developers can adjust this behavior at all, it would make troubleshooting these things for other end users much easier.
For my associations issue, the Fiddler message returned that I was adding an “invalid value for associationtype”, which is a domain'd field. Once again, because you're providing data that the Utility Network doesn't like, or breaks topology, or does anything to throw an REST API error, you're being returned with FMEException 928239. This is likely because it's getting passed as a string rather than an integer, something i've confirmed is happening in the Fiddler response, and something i'm still troubleshooting in my spare time.
In your previous experience with the subnetwork controllers, I am willing to bet that the exact same thing was happening on the back end. You're submitting an update or delete operation, that related to the feature being present in the subnetwork controller list, which triggered a topology violation in the Utility Network, which returns a 400 error from the REST API when that update or delete is applied to the feature service. Not Subnetwork specific - UN database behavior specific.
I hope this helps to update the documentation. If you need more clarity or expansion of details for any of the tests I ran to better improve this documentation, feel free to reply here or reach out directly. Thanks again for the dedication of your time to help me troubleshoot this issue!
Hi @Max Cushner
Thank you for your detailed investigation of FMEException 928239. You have helped us better understand that this is actually a generic error that occurs when the ArcGIS REST API returns a 400 error code for various reasons, not just subnetwork controller/topology related issues.
While writing and updating this article, I was able to reproduce the FMEException 928239 error as you described when "submitting an update or delete operation, that related to the feature being present in the subnetwork controller list, which triggered a topology violation in the Utility Network, which returns a 400 error from the REST API when that update or delete is applied to the feature service. " However, I now understand that this is just one specific case that triggers this error through a Subnetwork controller/ topology violation.
Upon further testing, you are correct that this is a generic error thrown when the ArcGIS REST API returns a 400 error. This can happen for various reasons, including invalid attribute values, topology violations, GlobalId matching issues, and other data validation failures. During the initial testing when writing and updating articles, I did not test for different scenarios like your association table issue or updating without using GlobalId, which is why I only specified the subnetwork controller case. I will update the article to reflect that FMEException 928239 is a generic error indicating a 400 response from the REST API. I have noticed that FME does display the error information in the lines above FMEException 928239, explaining why the feature was rejected; this is the same message you can see in Fiddler when viewing the ArcGIS REST API response.
Regarding the hardcoded specification of GlobalId, this appears to be an intrinsic behavior of the REST API when working with feature services. Esri's documentation mentions:
supportsApplyEditsWithGlobalIds
in the root resource will betrue
if all layers in the service havesupportsApplyEditsWithGlobalIds
astrue
. See Feature Service Layer Properties for more details.useGlobalIds
Used to specify whetherupsert
needs to useGlobalId
when matching features. The default value is false andObjectId
is used by default.For your ChangeDetector workflow, I am wondering if the error message appeared in your FME Translation log as you saw it in Fiddler. Can you verify whether or not the description "object is missing" appeared in the FME log output, similar to the screenshot I have embedded? I would like to verify whether FME was able to extract this specific error message from the ArcGIS REST API response as seen in Fiddler.

Regarding your association issue, could you please share your workspace and Fiddler's log by opening a support case? In the meantime, since the portal feature service requires specific domain code values (integer value) rather than descriptions (string value), what happens when you supply the code value (integer) instead of the string description?
Thank you again for taking the time to investigate this issue thoroughly and sharing your findings. Your detailed testing and documentation has helped us better understand the various scenarios that can trigger this error. I look forward to your response in the support case and with domain value testing!
Please sign in to leave a comment.