it is very useful to use part configuration and part instance to trace the specific product in the service, but i can not delete the product data from the system once it is incorporated even it has pass the end date.
has anyone knows how to delete the product from the system when it is not used in the service anymore?
It is generally a best-practice to not ever delete data from the system (particularly WTPart, WTDocument, EPMDocument, etc type data), and as such it may be particularly tricky to delete the data especially if it is tied into other data. And certain elements of Windchill actually cannot be deleted in the application, such as Product and Library containers.
I would recommend that you use a life cycle state such as "Obsolete" or "Inactive" to denote end of life of an object. This is very easy to do, and can be accomplished formally (through change objects or promotion objects) or informally (through the "set state" action) depending on the needs/use cases.
Feel free to send me an e-mail at email@example.com with additional details about your particular scenario, and I'd be happy to provide more options in greater detail.
I agree completely with the statement that deleting data is not in the best interest. However the situation does come up where making something "disappear" is legitimate. Now if this was planned for up front then maybe you have a Life cycle state that will handle this, oh but wait that would only apply to the latest at each rev. The rest of the history would not be able to be set to obsolete. The system needs a notion of redaction, where an privileged user can redact objects from access. This could relieve the common practice of creating a context where objects are moved to make them only accessible to admin types or having to plan obsolete into all object Life cycles.
it is really a challange to have a manageable database, with all data useful.
delete the effective date of the instances, you can later delete the product without any instances incorporated