Permission values should be lowercase
In the Permissions property on codeunits, tables, pages, reports, request pages, xmlports, and queries, the casing of permission values has no runtime effect. tabledata "Sales Line" = RIMD and tabledata "Sales Line" = rimd behave identically: when the object is in the call stack, the property supplies the object side of the indirect-permission handshake, and the runtime does not distinguish M from m in that check.
The documented intent is different, which is exactly why uppercase misleads:
Specifies direct (R) or indirect (r) read permission.
— Permissions Property on Microsoft Learn
That direct/indirect distinction is real in permissionset objects and in the InherentPermissions property, but it collapses in the object-level Permissions property. A user without any permission on the table is blocked whether the value is M or m; a user with indirect permission succeeds with either. Uppercase cannot elevate access on license-restricted tables such as posted documents or ledger entries. Reading RIMD on a codeunit and concluding that its callers get direct write access to the table is a wrong conclusion that uppercase invites.
Use lowercase values so the declaration reads as what it is: an indirect-permission grant. The rule applies to every permission value in the property, including the execute permission (x).
Example
codeunit 50100 "Ledger Entry Mgt."
{
Permissions = tabledata "G/L Entry" = RIMD; // Permission values should be lowercase [FC0006]
}Use lowercase permission values instead:
codeunit 50100 "Ledger Entry Mgt."
{
Permissions = tabledata "G/L Entry" = rimd;
}Exception
The rule does not apply to permissionset and permissionsetextension objects. There the casing is semantic: uppercase grants direct permission, lowercase grants indirect permission, and changing one to the other changes what users can do.
permissionset 50100 "Sales Documents"
{
Assignable = true;
// Uppercase is correct here: it grants direct permission
Permissions = tabledata "Sales Header" = RIMD;
}The InherentPermissions property is also excluded for the same reason.
Code fix
The ALCops: Convert permission values to lowercase code fix converts every permission value in the Permissions property to lowercase, preserving entry order and formatting.