Question

Usually, when a trigger runs, we check what kind of a profile the user has, and if it's the kind where we don't want the triggers to run, then we exit the trigger before running any other code.

Problem: we have a SF package installed that we purchased from some other company, and all of its code is invisible to us, and is not editable. How can we stop some of those triggers from running other than manually disabling them through UI? I want to temporarily disable them while running a test class.

Was thinking about doing something like this, but got an error saying "DML not allowed on ApexTrigger."

ApexTrigger at = [select id from ApexTrigger where name='SomeTriggerName'];
at.status = 'Inactive';
update at;
Was it helpful?

Solution

I've tried doing something similar, and got stuck. I don't believe there's a way to do what you're asking without having the owner of the managed package update the Apex Code.

The approach you listed before the problem is a great solution; I would recommend using Custom Settings in addition, though. You could recommend to the owner/developer of the Trigger to implement a Custom Settings check before executing the Trigger(s). That's the best solution I could come up with for some of my own Triggers.

It would be great if the ApexTrigger object could be updated, but Salesforce doesn't allow it.

OTHER TIPS

I believe your only options are to uninstall or undeploy the managed package.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top