Event subscription versioning
Workfront has two versions of event subscriptions. This article describes the differences between them.
The new version is not a change to the Workfront API, but rather a change to the event subscription functionality.
The ability to upgrade or downgrade event subscriptions ensures that when changes are made to the structure of events, existing subscriptions do not break, allowing you to test and upgrade to the new version without a gap in your event subscription.
For information on the endpoints used for upgrading or downgrading event subscriptions, see Event subscription versioning in the article Event subscription API.
- 25.2 Release (April 10, 2025): All new subscriptions created after the 25.2 release are created as Version 2.
- 25.3 Release (July 17, 2025): Subscriptions can no longer be downgraded to Version 1 after the 25.3 release.
Changes between Version 1 and Version 2
The following changes have been made for event subscriptions Version 2:
General changes
CREATE event was sent, then an UPDATE was sent with the parameter values (including calculated fields and their values).CREATE event is sent, which contains parameter values including calculated fields.UPDATE events with parameter values (including calculated custom fields) and are expecting to receive it after an object CREATE event that includes parameter values, you no longer receive that UPDATE event. If you want to see parameter values on object creation, you must create an additional CREATE subscription.For any type of event that contains a change on a multi-select type field, if the field only contained one value it would be converted to and sent as a string. Otherwise it would be sent as an array.
Examples:
myMultiSelectField: ["oneValue"]is converted and sent asmyMultiSelectField: "oneValue".myMultiSelectField: ["first", "second"]is sent asmyMultiSelectField: ["first", "second"].
Regardless of how many values are in the array, it will be sent as an array.
Examples:
myMultiSelectField: ["oneValue"]is sent asmyMultiSelectField: ["oneValue"].myMultiSelectField: ["first", "second"]is sent asmyMultiSelectField: ["first", "second"].
Object specific changes
projectIDtaskIDopTaskIDcustomerID
UPDATE event sometimes incorrectly showed the affected fields change from null to ID value.UPDATE events show the correct value for the affected fields.UPDATE event only if these fields have actually changed, not if any other value has changed.referenceObjID
UPDATE event incorrectly showed the affected field change from null to object id.UPDATE events show the correct value for the affected fields.UPDATE event only if these fields have actually changed, not if any other value has changed.groups
DELETE event incorrectly showed the affected field as an empty array in the before state.DELETE event correctly shows the affected field in the before state.DELETE event will still be sent but now show correct data for the affected field.proofDecisionproofNameproofProgress
UPDATE events would be sent. The first one did not include the affected fields while the second event did.UPDATE event, and a second unnecessary event is not sent.topReferenceObjCodereferenceObjectName
UPDATE event incorrectly showed topReferenceObjCode change from EXPNS to PROJ, and referenceObjectName change from null to string value of project name.UPDATE events show the correct value for the affected fields.UPDATE event only if these fields have actually changed, not if any other value has changed.topReferenceObjCodereferenceObjectName
UPDATE event was sent changing the affected fields to null before the DELETE event was sent.UPDATE event is not sent. The DELETE event has correct values for the affected fields in the before state.UPDATE events and are expecting to receive it when the object is deleted, you no longer receive that UPDATE event. If you wish to see these fields when the object is deleted, you must create an additional DELETE subscription.projectIDtaskIDroleIDtimesheetIDhourTypeIDprojectOverheadIDreferenceObjIDreferenceObjCodesecurityRootID
DELETE event incorrectly showed the affected fields as null in the before state.DELETE event correctly shows the affected fields in the before state.DELETE event is still sent, but now shows correct data for the affected fields.rootGroupID
UPDATE event incorrectly showed the affected field change from null to ID value.UPDATE events show the correct value for the affected field.UPDATE event only if that field has actually changed, not if any other parameter value has changed.resolveProjectIDresolveTaskIDresolvingObjID
UPDATE event sometimes incorrectly showed the affected fields change from null to ID value.UPDATE events will show the correct value for the affected fields.rootGroupID
UPDATE event incorrectly showed the affected field change from null to ID value.UPDATE events show the correct value for the affected field.UPDATE event only if that field has actually changed, not if any other parameter value has changed.convertedOpTaskID
UPDATE event sometimes incorrectly showed the affected fields change from null to ID value.UPDATE events show the correct value for the affected field.UPDATE event only if that field has actually changed, not if any other parameter value has changed.rootGroupID
UPDATE event incorrectly showed the affected field change from null to ID value.UPDATE events show the correct value for the affected field.UPDATE event only if that field has actually changed, not if any other parameter value has changed.convertedOpTaskID
UPDATE event sometimes incorrectly showed the affected fields change from null to ID value.UPDATE events show the correct value for the affected field.UPDATE event only if that field has actually changed, not if any other parameter value has changed.