Hi
From our understanding:
Questions 1 and 2
The easiest solution is often to rename the BusinessData Class (for example by adding a postfix or changing the package name).
This separates old and new data models cleanly:
- new cases use the new class and are indexed independently
- old data can still be queried as long as the old classes remain available
The limitation is that you cannot query old and new data together in a single API call, since they are treated as different Business Data Classes.
Question 3
Deleting cases removes the entries in IWA_BusinessCaseData, i.e. the linkage between case and Business Data.
However, the actual Business Data in IWA_BusinessData remains unless it is explicitly deleted. That means it also remain in the search index.
Question 4 / Best practices
- Prefer additive changes only
- Avoid changing types of existing attributes
- If a field must change incompatibly, create a new attribute and phase out the old one instead of reusing the same name with a different type
What we are not fully aware of yet is the exact impact of removing an attribute.
For type changes, the issue is clear. For removed attributes, I assume the main risk is that older persisted objects and index entries still contain fields that no longer exist in the current class definition.