In order to accomplish that we have to make it so that the relationship between cancelled services and packages no longer exist, or does not matter. Or, we do a sort of "soft delete" on packages, where they still technically exist in the system, but are erased from the interface.
So, I agree with you, it just takes some work to ensure that everything is handled properly and it doesn't introduce other issues.
What are your thoughts on a "soft delete"? Because this is the simplest way to implement deletes throughout the system. However, some people want the data to be physically deleted from the system.