In current implementation Commerce Order Item entities may refer to entities in product module via cpDefinnitionId and cpInstanceId.
Such organization complicates order management if products are managed in other external commerce system (SAP, Salesforce etc.)
We should introduce new entities that would allow module reorganization so that:
no json clob objects are needed to manage order data related to product
no references to product versions (cpDefinitionId)
no references to product istances (sku is allowed, cpInstanceId is not)
Can we manage this change in this way:
- Phase 1: plan and introduce new model updates in a way that all current structure is preserved - that way code can be merged immediately and it should not block QA and other team mates while testing, fixing bugs and developing new features
- Phase 2: implement integration tests that test Order management with new infrastructure
- Phase 3: Move segment by segment - for example, first extract options from json, or first make sure that we do not use cpDefinitionId references anymore but only externalReferenceCode, once we confirm that migrated segment behave fine, switch to new one
- Phase 4: Once we have solution that does not rely to legacy references, we should also have sequence of upgrade procedures that move legacy data. Now we can provide final upgrade process that would entirely remove legacy fields
Phases 1 to 4 must be tempered in a way that we do it in one release cycle so that we deliver completely reorganized solution not half done.