[jira] [Commented] (ATLAS-2774) Options for hard and soft delete of instances

2018-11-15 Thread Madhan Neethiraj (JIRA)


[ 
https://issues.apache.org/jira/browse/ATLAS-2774?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16687618#comment-16687618
 ] 

Madhan Neethiraj commented on ATLAS-2774:
-

With the above commits, Atlas supports delete-type selection per REST API call, 
via query parameter as detailed below:
 - to perform hard-delete, specify query parameter: {{deleteType=HARD}}
 - to perform soft-delete, specify query parameter: {{deleteType=SOFT}}
 - when deleteType query parameter is not specified, or set to any other value, 
Atlas will perform delete based on configuration {{atlas.DeleteHandlerV1.impl}}

Note that ability to specify delete-type via REST API requires following 
configuration to be set:
{noformat}
  atlas.rest.enable.delete.type.override=true
{noformat}

[~grahamwallis] - hope this meets the requirements listed in this JIRA. If any 
asks are not addressed by the changes committed (like purge functionality?), 
can you please file a separate JIRA. Thanks!

> Options for hard and soft delete of instances
> -
>
> Key: ATLAS-2774
> URL: https://issues.apache.org/jira/browse/ATLAS-2774
> Project: Atlas
>  Issue Type: New Feature
>Reporter: Graham Wallis
>Assignee: Ashutosh Mestry
>Priority: Major
> Fix For: 0.8.4, 1.2.0, 2.0.0
>
> Attachments: ATLAS-2774-Soft-and-hard-delete-impl.patch, 
> ATLAS-2774-branch-0.8.patch, ATLAS-2774-master.patch
>
>
> *Overview*
> For Entities and Relationships, the following delete behaviors are desired.
> Atlas can be configured to offer hard delete (only). Alternatively it can be 
> configured to offer soft-delete. Configuration is achieved by setting the 
> delete handler configuration property (see atlas-application.properties) to 
> either the SoftDeleteHandlerV1 or the HardDeleteHandlerV1. The default (for 
> when the property is not set) is to use the SoftDeleteHandlerV1.
> The AtlasEntityStoreV2 deleteById() and deleteByIds() and methods and the 
> AtlasRelationshipStoreV2 deleteById() method are sensitive to the above 
> configuration. When the configuration is soft these methods will perform a 
> soft delete; when it is hard they will perform a hard delete.
> In addition to the above methods, the AtlasEntityStoreV2 and 
> AtlasRelationshipStoreV2 offer a (new) purgeById() method that ALWAYS 
> performs a hard delete. This is true regardless of which delete handler has 
> been configured. When the configuration is hard, the purgeById() methods and 
> deleteById() methods are essentially equivalent. When the configuration is 
> soft, the purgeById() methods continue to provide a hard delete capability.
> The AtlasEntityStoreV2 deleteById(), deleteByIds() and purgeById() methods 
> will delete the specified entities and any relationships to which they are 
> connected. The AtlasRelationshipStoreV2 deleteById() and purgeById() methods 
> will delete the specified relationship. Deletion of a relationship may cause 
> an upate to an entity to which the relationhsip is connected, if it changes 
> the propagation of classifications, for example.
> In a hard delete or purge operation, an affected entity and relationship will 
> be removed from the graph and will not be returned in response to any future 
> queries. This is true regardless of whether the affected entity or 
> relationship has already been soft deleted or not. i.e. it's status could 
> initially be ACTIVE or DELETED. Following the operation it will not exist.
> In a soft delete, the affected entities and relationships (that initially 
> have status ACTIVE) are updated to set the status to DELETED. These instances 
> can still be returned from queries and searches if the appropriate control is 
> selected (to include deleted instances). Without that control selected they 
> will not be returned.
> *Use Case for soft delete*
> Soft delete provides a 'safe' means of deleting instances from the repository 
> whilst preserving an audit trail and (if supported by the repository) 
> enabling a deleted instance to be restored (to ACTIVE status).
> *Use Cases for hard delete*
> One use case for hard delete is to permanently remove soft-deleted items some 
> period of time after they were soft deleted.
>  Another use case for hard delete is to is to correct (clean up after) a 
> mistake in which a potentially large batch of incomplete/corrupted/wrong 
> metadata is loaded and needs to be fully removed.
> *Use Scenario for an OMAS user*
> An OMAS provides a delete function that does NOT offer the user a choice of 
> hard/soft. The OMAS's delete function will invoke the relevant soft delete 
> method provided by the OMRS - deleteEntity or deleteRelationship. These are 
> both soft delete methods.
> The Atlas OMRS Connector's deleteEntity/deleteRelationship methods will check 
> whether Atlas is configured 

[jira] [Commented] (ATLAS-2774) Options for hard and soft delete of instances

2018-11-14 Thread ASF subversion and git services (JIRA)


[ 
https://issues.apache.org/jira/browse/ATLAS-2774?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16687596#comment-16687596
 ] 

ASF subversion and git services commented on ATLAS-2774:


Commit daabed1312c73916136eacf09218300d75bb8f9b in atlas's branch 
refs/heads/branch-0.8 from [~mad...@apache.org]
[ https://git-wip-us.apache.org/repos/asf?p=atlas.git;h=daabed1 ]

ATLAS-2774: enhancement to support parameterized delete-type (hard or soft) per 
API call

(cherry picked from commit d003ddb33b16a0a67e6b7f7eae29c1638a4d0971)


> Options for hard and soft delete of instances
> -
>
> Key: ATLAS-2774
> URL: https://issues.apache.org/jira/browse/ATLAS-2774
> Project: Atlas
>  Issue Type: New Feature
>Reporter: Graham Wallis
>Assignee: Ashutosh Mestry
>Priority: Major
> Attachments: ATLAS-2774-Soft-and-hard-delete-impl.patch, 
> ATLAS-2774-branch-0.8.patch, ATLAS-2774-master.patch
>
>
> *Overview*
> For Entities and Relationships, the following delete behaviors are desired.
> Atlas can be configured to offer hard delete (only). Alternatively it can be 
> configured to offer soft-delete. Configuration is achieved by setting the 
> delete handler configuration property (see atlas-application.properties) to 
> either the SoftDeleteHandlerV1 or the HardDeleteHandlerV1. The default (for 
> when the property is not set) is to use the SoftDeleteHandlerV1.
> The AtlasEntityStoreV2 deleteById() and deleteByIds() and methods and the 
> AtlasRelationshipStoreV2 deleteById() method are sensitive to the above 
> configuration. When the configuration is soft these methods will perform a 
> soft delete; when it is hard they will perform a hard delete.
> In addition to the above methods, the AtlasEntityStoreV2 and 
> AtlasRelationshipStoreV2 offer a (new) purgeById() method that ALWAYS 
> performs a hard delete. This is true regardless of which delete handler has 
> been configured. When the configuration is hard, the purgeById() methods and 
> deleteById() methods are essentially equivalent. When the configuration is 
> soft, the purgeById() methods continue to provide a hard delete capability.
> The AtlasEntityStoreV2 deleteById(), deleteByIds() and purgeById() methods 
> will delete the specified entities and any relationships to which they are 
> connected. The AtlasRelationshipStoreV2 deleteById() and purgeById() methods 
> will delete the specified relationship. Deletion of a relationship may cause 
> an upate to an entity to which the relationhsip is connected, if it changes 
> the propagation of classifications, for example.
> In a hard delete or purge operation, an affected entity and relationship will 
> be removed from the graph and will not be returned in response to any future 
> queries. This is true regardless of whether the affected entity or 
> relationship has already been soft deleted or not. i.e. it's status could 
> initially be ACTIVE or DELETED. Following the operation it will not exist.
> In a soft delete, the affected entities and relationships (that initially 
> have status ACTIVE) are updated to set the status to DELETED. These instances 
> can still be returned from queries and searches if the appropriate control is 
> selected (to include deleted instances). Without that control selected they 
> will not be returned.
> *Use Case for soft delete*
> Soft delete provides a 'safe' means of deleting instances from the repository 
> whilst preserving an audit trail and (if supported by the repository) 
> enabling a deleted instance to be restored (to ACTIVE status).
> *Use Cases for hard delete*
> One use case for hard delete is to permanently remove soft-deleted items some 
> period of time after they were soft deleted.
>  Another use case for hard delete is to is to correct (clean up after) a 
> mistake in which a potentially large batch of incomplete/corrupted/wrong 
> metadata is loaded and needs to be fully removed.
> *Use Scenario for an OMAS user*
> An OMAS provides a delete function that does NOT offer the user a choice of 
> hard/soft. The OMAS's delete function will invoke the relevant soft delete 
> method provided by the OMRS - deleteEntity or deleteRelationship. These are 
> both soft delete methods.
> The Atlas OMRS Connector's deleteEntity/deleteRelationship methods will check 
> whether Atlas is configured for hard or soft delete. If Atlas is configured 
> for hard delete then soft-delete is not possible, and the method will throw a 
> FunctionNotSupported exception which is caught by the OMAS.
> On catching this exception the OMAS author should automatically escalate the 
> soft delete to a hard delete by calling either of the mandatory OMRS 
> purgeEntity() or purgeRelationship() methods. In the Atlas OMRS Connector 
> these methods will invoke AtlasEntityStoreV2 

[jira] [Commented] (ATLAS-2774) Options for hard and soft delete of instances

2018-11-14 Thread ASF subversion and git services (JIRA)


[ 
https://issues.apache.org/jira/browse/ATLAS-2774?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16687393#comment-16687393
 ] 

ASF subversion and git services commented on ATLAS-2774:


Commit 7869c9a5fe884397b883f30236ae01aa710d8c31 in atlas's branch 
refs/heads/branch-1.0 from [~mad...@apache.org]
[ https://git-wip-us.apache.org/repos/asf?p=atlas.git;h=7869c9a ]

ATLAS-2774: enhancement to support parameterized delete-type (hard or soft) per 
API call

(cherry picked from commit d003ddb33b16a0a67e6b7f7eae29c1638a4d0971)


> Options for hard and soft delete of instances
> -
>
> Key: ATLAS-2774
> URL: https://issues.apache.org/jira/browse/ATLAS-2774
> Project: Atlas
>  Issue Type: New Feature
>Reporter: Graham Wallis
>Assignee: Ashutosh Mestry
>Priority: Major
> Attachments: ATLAS-2774-Soft-and-hard-delete-impl.patch
>
>
> *Overview*
> For Entities and Relationships, the following delete behaviors are desired.
> Atlas can be configured to offer hard delete (only). Alternatively it can be 
> configured to offer soft-delete. Configuration is achieved by setting the 
> delete handler configuration property (see atlas-application.properties) to 
> either the SoftDeleteHandlerV1 or the HardDeleteHandlerV1. The default (for 
> when the property is not set) is to use the SoftDeleteHandlerV1.
> The AtlasEntityStoreV2 deleteById() and deleteByIds() and methods and the 
> AtlasRelationshipStoreV2 deleteById() method are sensitive to the above 
> configuration. When the configuration is soft these methods will perform a 
> soft delete; when it is hard they will perform a hard delete.
> In addition to the above methods, the AtlasEntityStoreV2 and 
> AtlasRelationshipStoreV2 offer a (new) purgeById() method that ALWAYS 
> performs a hard delete. This is true regardless of which delete handler has 
> been configured. When the configuration is hard, the purgeById() methods and 
> deleteById() methods are essentially equivalent. When the configuration is 
> soft, the purgeById() methods continue to provide a hard delete capability.
> The AtlasEntityStoreV2 deleteById(), deleteByIds() and purgeById() methods 
> will delete the specified entities and any relationships to which they are 
> connected. The AtlasRelationshipStoreV2 deleteById() and purgeById() methods 
> will delete the specified relationship. Deletion of a relationship may cause 
> an upate to an entity to which the relationhsip is connected, if it changes 
> the propagation of classifications, for example.
> In a hard delete or purge operation, an affected entity and relationship will 
> be removed from the graph and will not be returned in response to any future 
> queries. This is true regardless of whether the affected entity or 
> relationship has already been soft deleted or not. i.e. it's status could 
> initially be ACTIVE or DELETED. Following the operation it will not exist.
> In a soft delete, the affected entities and relationships (that initially 
> have status ACTIVE) are updated to set the status to DELETED. These instances 
> can still be returned from queries and searches if the appropriate control is 
> selected (to include deleted instances). Without that control selected they 
> will not be returned.
> *Use Case for soft delete*
> Soft delete provides a 'safe' means of deleting instances from the repository 
> whilst preserving an audit trail and (if supported by the repository) 
> enabling a deleted instance to be restored (to ACTIVE status).
> *Use Cases for hard delete*
> One use case for hard delete is to permanently remove soft-deleted items some 
> period of time after they were soft deleted.
>  Another use case for hard delete is to is to correct (clean up after) a 
> mistake in which a potentially large batch of incomplete/corrupted/wrong 
> metadata is loaded and needs to be fully removed.
> *Use Scenario for an OMAS user*
> An OMAS provides a delete function that does NOT offer the user a choice of 
> hard/soft. The OMAS's delete function will invoke the relevant soft delete 
> method provided by the OMRS - deleteEntity or deleteRelationship. These are 
> both soft delete methods.
> The Atlas OMRS Connector's deleteEntity/deleteRelationship methods will check 
> whether Atlas is configured for hard or soft delete. If Atlas is configured 
> for hard delete then soft-delete is not possible, and the method will throw a 
> FunctionNotSupported exception which is caught by the OMAS.
> On catching this exception the OMAS author should automatically escalate the 
> soft delete to a hard delete by calling either of the mandatory OMRS 
> purgeEntity() or purgeRelationship() methods. In the Atlas OMRS Connector 
> these methods will invoke AtlasEntityStoreV2 purgeById() or 
> AtlasRelationshipStoreV2 purgeById(). 

[jira] [Commented] (ATLAS-2774) Options for hard and soft delete of instances

2018-11-14 Thread ASF subversion and git services (JIRA)


[ 
https://issues.apache.org/jira/browse/ATLAS-2774?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16687386#comment-16687386
 ] 

ASF subversion and git services commented on ATLAS-2774:


Commit d003ddb33b16a0a67e6b7f7eae29c1638a4d0971 in atlas's branch 
refs/heads/master from [~mad...@apache.org]
[ https://git-wip-us.apache.org/repos/asf?p=atlas.git;h=d003ddb ]

ATLAS-2774: enhancement to support parameterized delete-type (hard or soft) per 
API call


> Options for hard and soft delete of instances
> -
>
> Key: ATLAS-2774
> URL: https://issues.apache.org/jira/browse/ATLAS-2774
> Project: Atlas
>  Issue Type: New Feature
>Reporter: Graham Wallis
>Assignee: Ashutosh Mestry
>Priority: Major
> Attachments: ATLAS-2774-Soft-and-hard-delete-impl.patch
>
>
> *Overview*
> For Entities and Relationships, the following delete behaviors are desired.
> Atlas can be configured to offer hard delete (only). Alternatively it can be 
> configured to offer soft-delete. Configuration is achieved by setting the 
> delete handler configuration property (see atlas-application.properties) to 
> either the SoftDeleteHandlerV1 or the HardDeleteHandlerV1. The default (for 
> when the property is not set) is to use the SoftDeleteHandlerV1.
> The AtlasEntityStoreV2 deleteById() and deleteByIds() and methods and the 
> AtlasRelationshipStoreV2 deleteById() method are sensitive to the above 
> configuration. When the configuration is soft these methods will perform a 
> soft delete; when it is hard they will perform a hard delete.
> In addition to the above methods, the AtlasEntityStoreV2 and 
> AtlasRelationshipStoreV2 offer a (new) purgeById() method that ALWAYS 
> performs a hard delete. This is true regardless of which delete handler has 
> been configured. When the configuration is hard, the purgeById() methods and 
> deleteById() methods are essentially equivalent. When the configuration is 
> soft, the purgeById() methods continue to provide a hard delete capability.
> The AtlasEntityStoreV2 deleteById(), deleteByIds() and purgeById() methods 
> will delete the specified entities and any relationships to which they are 
> connected. The AtlasRelationshipStoreV2 deleteById() and purgeById() methods 
> will delete the specified relationship. Deletion of a relationship may cause 
> an upate to an entity to which the relationhsip is connected, if it changes 
> the propagation of classifications, for example.
> In a hard delete or purge operation, an affected entity and relationship will 
> be removed from the graph and will not be returned in response to any future 
> queries. This is true regardless of whether the affected entity or 
> relationship has already been soft deleted or not. i.e. it's status could 
> initially be ACTIVE or DELETED. Following the operation it will not exist.
> In a soft delete, the affected entities and relationships (that initially 
> have status ACTIVE) are updated to set the status to DELETED. These instances 
> can still be returned from queries and searches if the appropriate control is 
> selected (to include deleted instances). Without that control selected they 
> will not be returned.
> *Use Case for soft delete*
> Soft delete provides a 'safe' means of deleting instances from the repository 
> whilst preserving an audit trail and (if supported by the repository) 
> enabling a deleted instance to be restored (to ACTIVE status).
> *Use Cases for hard delete*
> One use case for hard delete is to permanently remove soft-deleted items some 
> period of time after they were soft deleted.
>  Another use case for hard delete is to is to correct (clean up after) a 
> mistake in which a potentially large batch of incomplete/corrupted/wrong 
> metadata is loaded and needs to be fully removed.
> *Use Scenario for an OMAS user*
> An OMAS provides a delete function that does NOT offer the user a choice of 
> hard/soft. The OMAS's delete function will invoke the relevant soft delete 
> method provided by the OMRS - deleteEntity or deleteRelationship. These are 
> both soft delete methods.
> The Atlas OMRS Connector's deleteEntity/deleteRelationship methods will check 
> whether Atlas is configured for hard or soft delete. If Atlas is configured 
> for hard delete then soft-delete is not possible, and the method will throw a 
> FunctionNotSupported exception which is caught by the OMAS.
> On catching this exception the OMAS author should automatically escalate the 
> soft delete to a hard delete by calling either of the mandatory OMRS 
> purgeEntity() or purgeRelationship() methods. In the Atlas OMRS Connector 
> these methods will invoke AtlasEntityStoreV2 purgeById() or 
> AtlasRelationshipStoreV2 purgeById(). The effect of this is that if soft 
> delete is not possible, a hard delete 

[jira] [Commented] (ATLAS-2774) Options for hard and soft delete of instances

2018-07-04 Thread Graham Wallis (JIRA)


[ 
https://issues.apache.org/jira/browse/ATLAS-2774?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16532886#comment-16532886
 ] 

Graham Wallis commented on ATLAS-2774:
--

Thanks David - useful comments

 

One slight change to the original description above, that became apparent when 
I started to write some initial implementation and asked for clarification from 
Mandy -

If Atlas is configured for soft delete, then an OMRS purgeEntity() or 
purgeRelationship() will insist that the entity or relationship has been 
soft-deleted before doing the purge. In this configuration an entity or 
relationship must be in DELETED state otherwise purge will refuse to hard 
delete. If Atlas is configured for hard delete, then purge will remove the 
entity or relationship regardless of its state - so it will remove an entity or 
relationship that is in ACTIVE (or DELETED state).

 

> Options for hard and soft delete of instances
> -
>
> Key: ATLAS-2774
> URL: https://issues.apache.org/jira/browse/ATLAS-2774
> Project: Atlas
>  Issue Type: New Feature
>Reporter: Graham Wallis
>Priority: Major
>
> *Overview*
> For Entities and Relationships, the following delete behaviors are desired.
> Atlas can be configured to offer hard delete (only). Alternatively it can be 
> configured to offer soft-delete. Configuration is achieved by setting the 
> delete handler configuration property (see atlas-application.properties) to 
> either the SoftDeleteHandlerV1 or the HardDeleteHandlerV1. The default (for 
> when the property is not set) is to use the SoftDeleteHandlerV1.
> The AtlasEntityStoreV2 deleteById() and deleteByIds() and methods and the 
> AtlasRelationshipStoreV2 deleteById() method are sensitive to the above 
> configuration. When the configuration is soft these methods will perform a 
> soft delete; when it is hard they will perform a hard delete.
> In addition to the above methods, the AtlasEntityStoreV2 and 
> AtlasRelationshipStoreV2 offer a (new) purgeById() method that ALWAYS 
> performs a hard delete. This is true regardless of which delete handler has 
> been configured. When the configuration is hard, the purgeById() methods and 
> deleteById() methods are essentially equivalent. When the configuration is 
> soft, the purgeById() methods continue to provide a hard delete capability.
> The AtlasEntityStoreV2 deleteById(), deleteByIds() and purgeById() methods 
> will delete the specified entities and any relationships to which they are 
> connected. The AtlasRelationshipStoreV2 deleteById() and purgeById() methods 
> will delete the specified relationship. Deletion of a relationship may cause 
> an upate to an entity to which the relationhsip is connected, if it changes 
> the propagation of classifications, for example.
> In a hard delete or purge operation, an affected entity and relationship will 
> be removed from the graph and will not be returned in response to any future 
> queries. This is true regardless of whether the affected entity or 
> relationship has already been soft deleted or not. i.e. it's status could 
> initially be ACTIVE or DELETED. Following the operation it will not exist.
> In a soft delete, the affected entities and relationships (that initially 
> have status ACTIVE) are updated to set the status to DELETED. These instances 
> can still be returned from queries and searches if the appropriate control is 
> selected (to include deleted instances). Without that control selected they 
> will not be returned.
> *Use Case for soft delete*
> Soft delete provides a 'safe' means of deleting instances from the repository 
> whilst preserving an audit trail and (if supported by the repository) 
> enabling a deleted instance to be restored (to ACTIVE status).
> *Use Cases for hard delete*
> One use case for hard delete is to permanently remove soft-deleted items some 
> period of time after they were soft deleted.
>  Another use case for hard delete is to is to correct (clean up after) a 
> mistake in which a potentially large batch of incomplete/corrupted/wrong 
> metadata is loaded and needs to be fully removed.
> *Use Scenario for an OMAS user*
> An OMAS provides a delete function that does NOT offer the user a choice of 
> hard/soft. The OMAS's delete function will invoke the relevant soft delete 
> method provided by the OMRS - deleteEntity or deleteRelationship. These are 
> both soft delete methods.
> The Atlas OMRS Connector's deleteEntity/deleteRelationship methods will check 
> whether Atlas is configured for hard or soft delete. If Atlas is configured 
> for hard delete then soft-delete is not possible, and the method will throw a 
> FunctionNotSupported exception which is caught by the OMAS.
> On catching this exception the OMAS author should automatically escalate the 
> soft delete to a hard delete 

[jira] [Commented] (ATLAS-2774) Options for hard and soft delete of instances

2018-07-04 Thread David Radley (JIRA)


[ 
https://issues.apache.org/jira/browse/ATLAS-2774?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16532700#comment-16532700
 ] 

David Radley commented on ATLAS-2774:
-

Sounds like a good change. A couple of thoughts:
- we may need to have new return codes if we attempt a purge and it does not 
work.
- I assume a soft delete of an entity soft deletes any associated relationships 
around it. I guess we may need special logic to handle deletion when there is a 
 composition relationship. It would make sense that deleting the container - 
deletes the children entities in this case (recursively) or is not allowed 
until the children are themselves deleted.

> Options for hard and soft delete of instances
> -
>
> Key: ATLAS-2774
> URL: https://issues.apache.org/jira/browse/ATLAS-2774
> Project: Atlas
>  Issue Type: New Feature
>Reporter: Graham Wallis
>Priority: Major
>
> *Overview*
> For Entities and Relationships, the following delete behaviors are desired.
> Atlas can be configured to offer hard delete (only). Alternatively it can be 
> configured to offer soft-delete. Configuration is achieved by setting the 
> delete handler configuration property (see atlas-application.properties) to 
> either the SoftDeleteHandlerV1 or the HardDeleteHandlerV1. The default (for 
> when the property is not set) is to use the SoftDeleteHandlerV1.
> The AtlasEntityStoreV2 deleteById() and deleteByIds() and methods and the 
> AtlasRelationshipStoreV2 deleteById() method are sensitive to the above 
> configuration. When the configuration is soft these methods will perform a 
> soft delete; when it is hard they will perform a hard delete.
> In addition to the above methods, the AtlasEntityStoreV2 and 
> AtlasRelationshipStoreV2 offer a (new) purgeById() method that ALWAYS 
> performs a hard delete. This is true regardless of which delete handler has 
> been configured. When the configuration is hard, the purgeById() methods and 
> deleteById() methods are essentially equivalent. When the configuration is 
> soft, the purgeById() methods continue to provide a hard delete capability.
> The AtlasEntityStoreV2 deleteById(), deleteByIds() and purgeById() methods 
> will delete the specified entities and any relationships to which they are 
> connected. The AtlasRelationshipStoreV2 deleteById() and purgeById() methods 
> will delete the specified relationship. Deletion of a relationship may cause 
> an upate to an entity to which the relationhsip is connected, if it changes 
> the propagation of classifications, for example.
> In a hard delete or purge operation, an affected entity and relationship will 
> be removed from the graph and will not be returned in response to any future 
> queries. This is true regardless of whether the affected entity or 
> relationship has already been soft deleted or not. i.e. it's status could 
> initially be ACTIVE or DELETED. Following the operation it will not exist.
> In a soft delete, the affected entities and relationships (that initially 
> have status ACTIVE) are updated to set the status to DELETED. These instances 
> can still be returned from queries and searches if the appropriate control is 
> selected (to include deleted instances). Without that control selected they 
> will not be returned.
> *Use Case for soft delete*
> Soft delete provides a 'safe' means of deleting instances from the repository 
> whilst preserving an audit trail and (if supported by the repository) 
> enabling a deleted instance to be restored (to ACTIVE status).
> *Use Cases for hard delete*
> One use case for hard delete is to permanently remove soft-deleted items some 
> period of time after they were soft deleted.
>  Another use case for hard delete is to is to correct (clean up after) a 
> mistake in which a potentially large batch of incomplete/corrupted/wrong 
> metadata is loaded and needs to be fully removed.
> *Use Scenario for an OMAS user*
> An OMAS provides a delete function that does NOT offer the user a choice of 
> hard/soft. The OMAS's delete function will invoke the relevant soft delete 
> method provided by the OMRS - deleteEntity or deleteRelationship. These are 
> both soft delete methods.
> The Atlas OMRS Connector's deleteEntity/deleteRelationship methods will check 
> whether Atlas is configured for hard or soft delete. If Atlas is configured 
> for hard delete then soft-delete is not possible, and the method will throw a 
> FunctionNotSupported exception which is caught by the OMAS.
> On catching this exception the OMAS author should automatically escalate the 
> soft delete to a hard delete by calling either of the mandatory OMRS 
> purgeEntity() or purgeRelationship() methods. In the Atlas OMRS Connector 
> these methods will invoke AtlasEntityStoreV2 purgeById() or 
> AtlasRelationshipStoreV2