Why the AOSAuthorization Property in D365FO Can Break Your Forms (and Your Brain)
A cautionary tale for developers and security architects
Let’s talk about one of the most misunderstood properties in Dynamics 365 Finance & Operations: AOSAuthorization on tables and fields.
Sounds harmless, right? Set it to Yes, and the AOS (Application Object Server) will do the heavy lifting of enforcing security.
Except… that’s when things often start to fall apart.
🧠 "But the form has security!" — Yeah, not enough.
📄 Scenario:
You’ve built a custom form called EmpMedicalRecords. It shows sensitive employee medical data from a table named EmployeeMedicalTable.
You’ve secured the form through a privilege. Only HR managers with the correct role can access it. All good.
Then someone sets:
EmployeeMedicalTable.AOSAuthorization = Yes
And suddenly your HR users say:
"The form opens… but no data is showing. What happened?"
😯 The hidden pitfall:
When AOSAuthorization = Yes, the system requires explicit table-level permissions for the user’s role. Form/menu item security is no longer enough.
With no Read permission on the table, the form loads — but all grids are blank. And no error is shown.
🤦🏼♂️ Bonus Horror Story: Broken Data Entity Imports
🔹 Common misunderstanding:
Many think AOSAuthorization = Yes only impacts UI. Not true.
It can completely block data entity imports, especially if set on critical fields like:
❌ Real-world result:
🔧 Why it happens:
When a field has AOSAuthorization = Yes, the import process checks if the user (even Admin) has Update permission on that field. If not, the field value is blocked during import.
🌟 Bonus Tip: Don’t Authorize Your Sequence Fields
One of the most subtle mistakes is applying AOSAuthorization = Yes to fields like MedicalRequestID, LoanNumber, or even LineNum.
Why it hurts:
These fields are often populated automatically by number sequences or during import. If AOSAuthorization is enabled:
“It works in dev but fails in UAT?” Check your field-level authorization.
🔒 Rule of thumb:
If the field is:
…then leave AOSAuthorization = No
✅ Best Practices
When to use AOSAuthorization = Yes
When to avoid it
🧠 Final Thought
Security in D365FO is layered and powerful — but also fragile when misunderstood.
The AOSAuthorization property sounds like a safeguard, but if used blindly, it:
Next time you're tempted to set it to "Yes," pause and ask:
"Do I have the right table and field permissions defined everywhere this data is used?"
If not, you’re better off leaving it as "No."
Lead Digital Engineer at Sonata Software
3moThanks for posting