I have a working BPM that prevent delete a Case (Case Management) from the HDCase table, if the Case (Case Entry) has a Quote, Order, or/and Job associated. This works very well. However, occasionally, we identify a Case that’s been deleted. We know this because paper trail, the HDCaseNum column in the Quote or Order Entry is changed to zero, and the HDCaseNum that was associated is no longer in the HDCase table. The users are not able to change the HDCaseNum column in OrderEntry, Job Entry or Quote Entry. But somehow they are able to delete the Case.
Other than a DMT which we tested and would trigger the BPM, is there another way in Epicor to Delete a Case?
Is it possible that they are deleting the data in the case i.e. the order number and then deleting the case? Not sure if that is even possible, but just a suggestion.
You could put an audit log on the HDcase for a period of time to track what is going on, then at least you can see who is doing what and query the users.
I had a similar issue with duplicate contacts appearing and took me ages to work out what was going on. Turns out we had one CRM who manually entered in a contact name into the quote and it added a new contact record to the customer.
I was able to track down who the user was by using the QuoteHed.ChangedBy field. However, the user was not able to tell me how this was done. In fact, the user told that they followed the instructions to delete the Quote then Delete the Case, which would not trigger the BPM. The BPM will only trigger and prevent the Case deletion if the Case has a Quote, Order, or Job.
After some heavy testing, I was able to replicated the problem:
Create the Case.
Create the Quote Header/Line (Keep the Quote Entry screen open).
From the Case Entry screen, delete the Quote by first selecting it on the tree, then clicking delete.
Return to the Quote screen, it should still have the quote that was created.
Click save
Click refresh or clear/recall the quote.
I will need to create a Row Rule in Epicor Quote Entry to disallow the saving of a Quote with Case Number equal to zero.
I am not sure which would be better, a form row rule or a data directive. Either way, the required code would have to be triggered for every single quote to make sure the HDCaseNum has not change to zero. A data directive is simple and would not require a c# block.
So I introduced a Data directive on HDCase where whenever a case was deleted, I sent an email to the Case creator, with the name of who had deleted it…
We’ve had to do that in similar cases as well. Sometimes when a co-worker comes to them with and sats, “Hey, you did XYZ and screwed up my day.” instead of IT telling them they listen.