This article provides guidance on how to use the Delete from Data Store Entities smart service in your process model. The Delete from Data Store Entities Smart Service lets you delete data in multiple data store entities within the same data store based on your input. The entities to be affected and the data to remove are defined by the Data to Delete node input of type EntityDataIdentifiers. The data are identified by IDs in an array, so only data whose data type has a defined primary key field can be deleted.
This smart service does not produce a node output, but the deletions are added to a new deletion log as described below. If any write to the data store fails, no data is deleted from the data store.
Running this smart service irreversibly deletes the identified row(s) from the target entity. The deletion of related data will be based on the JPA annotations/DB schema defined for the entity. For example, deleting the parent in a one-to-many containment relationship also deletes the children, but deleting one side of a lookup relationship will not affect the related object.
When using this smart service, note that the
cascade attribute setting also impacts the behavior of your related tables. Appian automatically defines the
cascade attribute based on the data relationship you select when you use the Data Type Object to create a CDT that defines your data structure and data relationship. By default, nested CDTs defined by a one-to-one relationship have the cascade attribute set to
ALL. Additionally, using an XSD file to directly define a data relationship will result in a
cascade attribute of
ALL, when the attribute is undefined. In both instances, deleting a row in the parent table will also delete any related rows in the child table. If you want to retain the row in the child table when the parent row is deleted, you must manually change the
cascade attribute to
REFRESH in the parent CDT’s XSD file.
You have an application that manages purchase requests with a process which needs to remove data from three different entities based on cancellations for an account.
When the Account Manager has a call with a customer, he/she updates the status of the different purchase requests to "cancelled" for the customer account.
Using this smart service, you can remove data from all three data store entities within the same transaction. This way, if an error occurs while deleting from one of the entities, the other entities will not be modified. The data is left in a consistent state as if no data was deleted from any entities.
The user running the smart service must have at least Viewer rights to the data store that contains the entities defined in the Data to Delete node input. Attempting to complete this task without the proper user rights generates an error message and pauses the task.
Category: Data Services
Assignment Options: Unattended
See also: Smart Services
This section contains tab configuration details specific to this smart service. For more information about common configurations see the Process Node Properties page.
|Data to Delete
|The target entity and the primary key values of the items to delete.
|Additional information to capture in the audit logs.
For example, if the node is run as an administrator, indicate the user who requested the deletion.
You can delete from multiple data store entities in one transaction by creating an array of type EntityDataIdentifiers.
See also: EntityDataIdentifiers
If you set the Data to Delete input to delete data in three data store entities, using process variables for the entities and process variables populated in a prior process step for the data values, your input value may resemble this:
a!entityDataIdentifiers(entity: pv!ENTITY_SPRINT_ITEMS, identifiers: pv!itemIdsToDelete),
a!entityDataIdentifiers(entity: pv!ENTITY_COMMIT, identifiers: pv!commitIdsToDelete),
a!entityDataIdentifiers(entity: pv!ENTITY_SPRINT, identifiers: pv!sprintIdsToDelete)
A sync will automatically occur if you use this smart service to delete data in a database table that backs a synced record type.
Depending on how your table data is structured in the CDT, the maximum number of rows that can be immediately synced will vary:
If you update more than the maximum number of rows, the smart service will successfully write to the data source, but the sync will fail. To prevent the sync from failing, it's recommended to apply a limit to the smart service so it does not update more than the maximum number of rows available to sync.
a!deleteFromDataStoreEntities( dataToDelete, deletionComment, onSuccess, onError )
List of EntityDataIdentifiers
A list of EntityDataIdentifiers that identify the items to delete.
Additional info to capture in the audit logs, for example, if the node is run as an administrator, indicate the user who requested the deletion.
A list of saves or an HTTP response to execute after the smart service executes successfully. Created with
A list of saves or an HTTP response to execute when the smart service does not execute successfully. Created with
Each time this smart service executes successfully, a new line is added to the
data_store_deletions.csv log file for each top level item explicitly configured.
This does not include a new line for children records in a containment relationship and those automatically deleted with the deletion of the parent.
The deletion file is located in the following file path:
Each row in the deletion log contains the following information about the data deletion:
All information is created in the primary language of the system - not the user's preferred language.
See also: Deletion Logs
All data is deleted from the data store in the order in which it was given.
If you receive a casting error, check your EntityDataIdentifiers value. The identifiers in this value must be the primary key value IDs of the data to delete (such as
pv!opportunities.id) rather than CDT values (such as
pv!opportunities) or else a casting error occurs.
If you receive the following message, it may be due to a constraint violation exception or similar error that occurred while attempting to save data to the database:
An error occurred while trying to delete data. No data was deleted. Details: <exception message>
A constraint violation exception depends on your database schema and may occur when deleting an item that is referenced by another item in the same table via a foreign key.
Since this smart service works directly with your data store and custom data types, be sure to note the Schema Design Best Practices before implementing.
See also: Schema Design Best Practices
Can be used with Appian Portals if it is connected using an integration and web API.
|Custom Record Field Expressions
You cannot use this function to configure a process report.
You cannot use this function to configure a process event node, such as a start event or timer event.
Delete from Data Store Entities Smart Service