Time to get back to Best Practices for Per Tenant Extensions.
This time we are going to discuss something that in my opinion should also be implemented by ISV’s in their AppSource solutions.
By default, AL Objects are extensible. This means that everyone can take a dependency on your extension and therefor Microsoft does not allow you to refactor any code once it lands on AppSource.
The solution is simple, but since it’s manual it requires extra discipline.
My recomendation would be to, by default, make all tables, pages and codeunits extensible = false and access = internal.
This means others cannot reuse your code and therefore you can change signatures of procedures, rename them and refactor your code.
Examples
table 50100 MyTable
{
DataClassification = ToBeClassified;
Extensible = false;
fields
{
field(1; MyField; Integer) { }
}
internal procedure MyProcedure()
begin
Message('Foo');
end;
}
page 50100 MyPage
{
PageType = Card;
ApplicationArea = All;
UsageCategory = Administration;
SourceTable = MyTable;
Extensible = false;
layout
{
area(Content)
{
group(GroupName)
{
field(Name; Rec.MyField) { }
}
}
}
}
codeunit 50100 MyCodeunit
{
Access = Internal;
trigger OnRun()
begin
end;
var
myInt: Integer;
}
If you are an ISV, your reselling and implementationpartners can request an object to be opened up if they have a business reason for it.
Read More
If you want to read more about my Per Tenant Best Practices you can read previous posts.
Why best practices for Per Tenant Extensions?
One Per Tenant Extension to ‘Rule Them All’
Organizing your “big PTE” in Micro Services
PreProcessorSymbols & Per Tenant Extension Best Practices
Extending the same object twice in one Extension
Do you have feedback?
I love it when people have feedback and enjoy answering questions.
What I don’t like is polarization and social media cancel culture. Everybody has the right to their opinion and eveyone has the right to make mistakes and learn from it. Me included.
If you have to assign an advisory board, would you have a group of people with the same option that just say “yes” or would you like to be challenged with different opinions?
Again, with love and enjoy your “Sinterklaas” weekend
Marije

One response to “Best Practices for (Per Tenant) Extensions | Protect Yourself”
Tip, LC0011 rule of https://github.com/StefanMaron/BusinessCentral.LinterCop can help with the discipline part 😉
LikeLike