Is there a way to deactivate and delete the asset as soon as its expired i.e. the assets reaches the expiry date set for the asset?
Have you tried setting up the "Adobe CQ DAM Expiry Notification".
As per official documentation, if the configuration is set, the scheduler runs a check and deactivate the expired assets. However, it doesn't delete the assets and I don't think it does delete OOTB. For that you'll have to write custom code.
Thanks for the query.
But for me when asset is expired, the it doesn't deactivates. Any configuration that i am missing?
An expired asset is deactivated when is passes it's expiry date: "[...] ensures that the published asset is unpublished when it expires" (Digital Rights Management in Assets).
To delete the assets, you will have to create a workflow that finds all expired assets using a query, and deletes those nodes. Here is a query to find all assets expired at a given date (JCR SQL-2 does not have a DATE() function to get the current date, you will have to supply this date in Java):
SELECT asset.* FROM [dam:Asset] AS asset
INNER JOIN [dam:AssetContent] AS jcrContent ON ISCHILDNODE(jcrContent, asset)
INNER JOIN [nt:unstructured] as metadata ON ISCHILDNODE(metadata, jcrContent)
WHERE ISDESCENDANTNODE(asset, '/content/dam')
AND NAME(metadata) = 'metadata'
AND metadata.[prism:expirationDate] <= CAST('2019-08-28T23:59:59.999Z' AS DATE)
You can run this query now by going to CRXDE > Tools > Query, selecting SQL2, pasting the query in the text area and clicking execute: