This issue is only related to App Source apps because of AS0002 and AS0004 rules.
The issue is already described here : https://github.com/microsoft/AL/issues/5818
To summarize (app A and B are App Source apps):
1. App A can declare an enum.
2. App B can take a dependency to app A and use the enum as the type a table field
3. App A can mark the enum as ObsoleteState = Pending and then remove the enum in a future version
The reason can also be because app B wants to remove its dependency to app A at some point.
4. App B is now in a dead end: the field cannot be removed (because of AS0002) or its datatype cannot be changed (because of AS0004).
My suggestion is not to prevent apps from removing enums. I strongly think that at some point and with the correct obsolescence path, any change should be allowed.
My suggestions are:
- Either at some point AS0002 must be relaxed (if the field is already marked as ObsoleteState = Removed for instance) (In my opinion, it is not the safer solution)
- Either AS0004 must be relaxed to allow switching from one enum to another enum (if the field is marked as ObsoleteState = Pending or Removed for instance).
The current reason since dependent extensions may break marked on the documentation page is not relevant as many AppSourceCop rules already allow to break dependent extensions IF the right obsolescence process is applied.
Business Central Team (administrator)
Thank you for this suggestion! Currently this is not on our roadmap. We are tracking this idea and if it gathers more votes and comments we will consider it in the future. Best regards, Business Central Team