AppSourceCop Error AS0088
Objects with an ID that can be referenced and which have been published must not be deleted.
Description
Objects that can be referenced by ID and which have been published must not be deleted. This might break the upgrade of existing installations and dependent extensions.
How to fix this diagnostic?
Reverting the change will fix this diagnostic. If deleting the object is required, the recommended approach is to mark it first as ObsoleteState Pending.
You can then remove the object in a later version, or mark it as ObsoleteState Removed if the object is a table. You cannot mark a table ObsoleteState = Removed
if the table is not ObsoleteState = Pending
in the previous version.
Code Examples
Example 1: Deleting a Codeunit triggers the rule
Version 1.0 of the extension:
codeunit 50120 Foo_MyCodeunit
{
procedure MyProcedure()
begin
// Business logic.
end;
}
In version 2.0 of the extension, codeunit 50120 has been deleted. This will trigger rule AS0088.
Example 2: Deleting an obsolete pending Codeunit
Version 2.0 of the extension:
codeunit 50120 Foo_MyCodeunit
{
ObsoleteState = Pending;
ObsoleteReason = 'Use 50121 Foo_MyNewCodeunit instead.';
procedure MyProcedure()
begin
// Business logic.
end;
}
codeunit 50121 Foo_MyNewCodeunit
{
procedure SomeProcedure()
begin
// Business logic.
end;
}
In version 3.0 of the extension, codeunit 50120 has been deleted. This is okay, because codeunit 50120 previously had been marked with ObsoleteState = Pending
informing developers to use "50121 Foo_MyNewCodeunit" instead.
Related information
AppSourceCop Analyzer
Get Started with AL
Developing Extensions