I use the workfow API for all CRUD logic i.e., to create, delete, edit, and update datatype
I have noticed that they work well if the relationships between Datatypes are unidirectional. I have gone as far as the third level

Riccardo