Thanks for sending the full files. Let me see if I have this straight. My understanding is that menu has permissions injected into it. Then menu.navRoutesByLevel() is called which, in turn, calls the Instance.Permissions.qUserLevel(). Then qUserLevels() errors because it can’t find Instance.DataUserLevels, which you currently have commented out and replaced with a direct call to UserLevels()
which I can only assume is used to populate DataUserLevels in the cache.
So firstly, how and when in your application lifecycle is DataUserLevels placed in the cache, and what is its expiration?
What happens if you ignore menu and just call Permissions.qUserLevel() directly from a test page somewhere?
Also, I’m not sure if it matters, but are menu and permissions transient objects?