In picklist options, you need “Latest”. But as you detected, “Latest” is not available with multi-picklist.
It’s a limitation Autodesk should address.
Well, you could add the Specs to the BOM. Then you have control over which versions you see.
But I suspect you don’t want that.
The “Latest” option (single select) will display the latest revision, and it figures this out when the page is displayed.
Under the covers, the picklist will still point to the original (superseded) revision, a script will also notice this, but the page displays to the user the link to the latest revision.
In other words, the Item is not actually updated when the Spec is released.
The only way, as you suggest, would be to update the Item itself when the Spec is released.
It’s not a great solution, and it’s also quite difficult to code.
The trick is to find a trigger to run the code.
An easy way is to use the on-edit on the Item, to loop through the Spec list, and adjust the entries to the latest revision.
However, this will require an on-edit of the Item, and this will not happen when the Change Order releases the Spec.
A better place for the trigger is the “release” transition of the Change Order.
The trick is to use this to loop managed items (Specs), and navigate Spec --> Item, and update the picklist on the Item to point to the Working Revision of the Spec.
This Working Revision is the dmsid that is in the process of being released.
After the release, the Item will point to the released revisions of your specs.
The problem is navigating Spec --> Item.
Your Item has a link to the Spec, but not the reverse.
So you need an on-edit on the Item to maintain the bidirectional link Item --> Spec --> Item.
I expect this is a many-to-many relation?
If so, the best way is to let the Item add its dmsid to a list of dmsids on the Spec (in a string field).
Or, if you are not using the relationship tab for anything else, then let the Item on-edit add the Specs to the relationships tab with bi-directional option (and remove any on the rel tab that are no longer present).
In this way, you have the ability to navigate Spec --> Item (either with the reverse link, or using the rel tab), but you will need to do this for all revisions of your Spec, because the Item may have informed the Spec it is his parent in an older revision of your Spec.
This is around 100 lines of code, and it is not ‘beginner level’.
If you have very many Items referring to the same Spec, then you risk a time-out.
In fact, the above approach is very much the ‘last resort approach’. It is a poor data model too.
You might be better with 10+ fields SPEC_1, SPEC_2, etc – all single select and hope the user never chooses too many(!)