Documentation/Manuals/Books regarding customisation

The reason you need to generally dispatch updates via modeling is the fact that bpmn-js needs to be informed when elements have changed (read about it here).

Using modeling.updateProperties(...) changes attributes of the underlying BPMN element (exactly what you want to do). For details have a look at the UpdatePropertiesHandler that takes care of doing that.

For further assistance, please provide your example somewhere so we can look into it.

Edit: Learn about the available BPMN properties in the bpmn.json descriptor.