Allow delete only if an Item is not published to Dynamic Delivery

In SDL Docs CMS, users can delete a publication, even after it has been published to Dynamic Delivery and has a "Draft" status. This results in entries in the broker database that cannot be removed because they are no longer associated with any item in the CM database. Over time the orphan items keep increasing in the broker database and could be part of the content returned from the PCA service. This could result in unexpected content to different clients consuming content from PCA.

I suggest forcing the condition "allow delete only if not published" when deleting an item from CMS.

  • I would ask you to not adapt the ClassicASP pages, as they will disappear in a future release. It also doesn't solve the coverage for the same delete action in Client Tools (like Publication Manager) or over API.

    There are two answers for me here

    1. In I already wrote: "In the initial design of the .NET based plugin system, it was deliberately chosen to name the plugins "IWrite..." indicating that they would trigger on write operations like create/update/checkin/etc. By extension there are entries on our backlog for "IDelete..." and "IMove...", the other typical verbs you want to track. The last verb is "IRead..." but offering plugins here might completely slow down any system (definitely if the implementation is poor on performance). So in short, we are aware, it however never made it to the top of the backlog."... 
    2. Open up a maintenance/management API on top of the Dynamic Delivery (UDP/DXD/CD) system.


  • We can up with an approach of updating PublicationFrame.asp and RepConfirmDel.asp to add checks when attempting to delete a publication, either at the language, version, logical or folder level. From RepConfirmDel.asp, the idea is to make a call to the Public Content Service to determine whether a publication is published, and allow/disallow the deletion accordingly. The question is whether this is a valid approach/best practice.

    Another consideration is whether we can use a write plug-in. However, so far we have not been able to find a mechanism to trigger a write plug-in based on delete operations...