ProtectedconstructorStaticInstanceThe Global Object Store is a place to store global objects that need to be shared across the application. Depending on the execution environment, this could be the window object in a browser, or the global object in a node environment, or something else in other contexts. The key here is that in some cases static variables are not truly shared because it is possible that a given class might have copies of its code in multiple paths in a deployed application. This approach ensures that no matter how many code copies might exist, there is only one instance of the object in question by using the Global Object Store.
Called during application bootstrap to initialize the singleton.
Optional_contextUser: UserInfoThe authenticated user context (required for server-side, optional for client-side)
Optionalprovider: IMetadataProviderOptional metadata provider to use for initialization
Runs the sweep and logs the outcome. Separate from HandleStartup so callers that already hold a provider — tests, a maintenance command — can invoke it directly.
Optionalprovider: IMetadataProvider | nullthe number of offending fields found
Reports field permission rows whose role holds no entity permission on the same entity.
MJEntityFieldPermissionEntityServer.Validate() refuses to create such a row, and
reconciliation deletes any it finds — but both only see writes that go through the entity
layer. Direct SQL, a migration, or a ReplayOnly save can author one unobserved, and until
the next reconciliation it is fully live: field-rule aggregation matches on role membership
alone, so the rule applies to any user holding that role who reaches the entity through a
different one. That makes it a real access change with no visible cause.
Scoped to FLS-enabled entities, matching where reconciliation runs and where the rules actually decide anything — a rule on a disabled entity is dormant rather than wrong.
Reads cached metadata only; no queries.
Optionalprovider: IMetadataProvider | nullthe number of orphaned rows found
Protected StaticgetReturns the singleton instance of the class. If the instance does not exist, it is created and stored in the Global Object Store. If className is provided it will be used as part of the key in the Global Object Store, otherwise the actual class name will be used. NOTE: the class name used by default is the lowest level of the object hierarchy, so if you have a class that extends another class, the lowest level class name will be used.
OptionalclassName: string
Reports — loudly, but without blocking boot — any field on an FLS-enabled entity that the MJ system user can no longer fully use.
Warns rather than refuses to start. The condition is bad configuration, not a broken build, and a server that will not boot is a worse failure than one that boots and says exactly what is wrong. It is also self-inflicted-recovery-hostile: the administrator's route to fixing the rows is usually the application that would refuse to start.
Costs nothing when nothing is enabled: entities with
EnableFieldLevelSecurity = falseare skipped on a boolean read, and there are no queries at any point.