Invoking a BO from a Data Directive is generally a bad idea. There is a not inexpensive tax to run a business object on what’s essentially a Database Trigger.
I would move what you need to move to a method directive. Generally try to keep your data directives very quick and inexpensive.