Answer
The specific attribute NAME used for the outer wrapping matters and must exactly match what the ultimately-called target API method expects internally — using a mismatched or made-up name for the outer attribute, rather than the name the target method's own internal parsing logic actually expects, causes the whole nested attribute string to be misparsed, with its sub-fields bleeding together into unrelated values instead of being extracted correctly. A more robust general alternative when this direct multi-parameter Deferred_Call approach proves fragile: add a small custom checkbox-style flag field to the object being changed, have a separate Custom Event trigger specifically off that flag being set, and have that event directly fetch the record's own OBJID/OBJVERSION via a cursor and call the target API method with a freshly built, correctly-named attribute set constructed right there in the event itself. This sidesteps needing to correctly reconstruct the whole parameter set through Deferred_Call's own single generic parameter mechanism, and also naturally avoids the original mutating-table problem, since the flag-triggered event runs outside the immediate mutating context.