Post navigation

Answers to a post-course question regarding object prefixes in extensions for AppSource:

Object prefix must be registered with Microsoft (at least 3 digits) and must be unique (it’s globally reserved for you)

It can be a prefix or a suffix (you can call an object XXXMyTable or MyTableXXX)

You have to use it for every objects in your extension

This is case insensitive (you can call an object XXXMyTable or xxxMyTable)

You can use the prefix in any format you want (XXX_MyTable, XXX-MyTable, XXX.MyTable, XXX MyTable etc. are all valid names)

You can register more than one prefix (you can have a prefix for app but I think this is not a good way to do, I prefer a prefix for company)

Functions in your extension objects cannot have the prefix/suffix in names (the prefix is in your object name, so you can have something like XXX-MyCodeunit.MyWonderfulFunctionNameLongAsIWant() )

If you have extension A that depends on extension B and extension C, and both B and C adds a function MyFunction to a standard table (Customer table for example), if you call Customer.MyFunction you receive an error on compilation (ambiguous call)

This is all what I know regarding prefix/suffix rules. Feel free to add if you know more 🙂

P.S. My absolutely personal opinion: I’m not a fan of object prefix/suffix. I think this is something not very “elegant” and clean and for me it’s only a simple workaround against a big lack in the actual AL framework: the missing of namespaces.

A namespace is designed for providing a way to keep one set of names separate from another. The class names declared in one namespace does not conflict with the same class names declared in another.