[SalesForce] Insufficient Privileges – Visualforce Page – Occurs as System Admin

UPDATE: RESOLVED! I heard back from Tier 3 support and they acknowledge a bug and said it was due to a user selecting "Feed-Based Layout" on the Create New Layout screen. Be careful with that option when using visualforce pages until they fix! Screen shot of feedbased layout

I have a client using a managed package that includes a visualforce page to override tasks and events. All users (including my System admin account) gets the:

Insufficient Privileges – You do not have the level of access necessary to perform the operation you requested. Please contact the owner of the record or your administrator if access is necessary. For more information, see Insufficient Privileges Errors

I have googled and followed the suggestions of every post I could find to solve this issue. Please look at the list below of the things I have tried and see if I overlooked a possible cause:

  • Vender of managed package reviewed the issue and could not resolve
  • Reviewed setup audit logs to see what changed around the time that the error started occuring
  • Checked debug logs at finest level – "Success" (no help) 🙁
  • Tested in a Sandbox refreshed a couple months ago with the same version of managed package and configuration – Sandbox works great
  • Verified the controller and visualforce API version match
  • Verified all profiles have access to the visualforce page (via VF security)
  • Verified all profiles have access to the APEX controller
  • Verified users have access to the objects (the task and event page loads fine when override is removed. The visualforce page does pull information from a custom object but that object is fully accessible.)
  • Verified that the error occurs no matter what role in role hierarchy the user is in.
  • Sharing settings for activities are set to "Controlled by Parent". Users can access parent records without issue.
  • A related permission set was modified around the time this occurred. So, I brought over an older version of the permission set that works in a sandbox and the error persists.
  • UPDATE: Forced recalculation of sharing settings on all objects.
  • UPDATE: Verified licenses for managed packaged are properly allocated.
  • UPDATE: Verified field level security on task/event and all related objects to the managed package.

I was able to get an event record to load without using the VF override but I haven't identified the difference. I am still investigating that. UPDATE: Discovered that I get the error when the event or task is related to a specific object that is from the same managed package.

One other item I should note that may or may not be related. A key user of this client was recently let go and their account was set inactive. Around that same time the error began occurring. We have re-enabled their account.

Any ideas?

UPDATE: Looks like this error ONLY occurs when it's related to one of the objects that is provided by the installed package. But, as a system admin I have "modify all" for this object. And I can view the records for this object when I access them directly.

UPDATE 2: I am at a complete loss here. This org does not have premier support. I am considering re-installing the managed package but I am concerned about the implications of that. (Of course I'll reach out to the vendor about doing this and also test in sandbox.)

UPDATE 3: Got in touch with tier 1, waiting to be escalated. In the meantime… I was able to get the source code for the VF page from the managed package and create a VERY simplified version of the VF page. I received the same error when the task/event was related to the managed package object. Again, I and all other users can access any records from the managed package object but when the record is related to a task/event the VF page throws the "Insufficient Privileges" error.

Also, I was able to pull this fun error message. Any thoughts?

Take a look:

EntityObject can not be initialized with null EntityInfo
system.security.NoAccessException: EntityObject can not be initialized with null EntityInfo
    at common.udd.object.EntityObjectImpl.<init>(EntityObjectImpl.java:122)
    at common.udd.object.EntityObject.<init>(EntityObject.java:124)
    at common.ownership.OwnedEntityObject.<init>(OwnedEntityObject.java:55)
    at core.customentity.BaseCustomDataTemplateObject.<init>(BaseCustomDataTemplateObject.java:35)
    at core.customentity.CustomEntityDataTemplateObject.<init>(CustomEntityDataTemplateObject.java:40)
    at core.customentity.CustomEntityDataTemplateUi.<init>(CustomEntityDataTemplateUi.java:34)
    at core.customentity.CustomEntityDataTemplateUi.<init>(CustomEntityDataTemplateUi.java:30)
    at core.customentity.CustomEntityDataTemplatePage.hook_init_entityUi(CustomEntityDataTemplatePage.java:50)
    at core.customentity.CustomEntityDataTemplatePage.hook_init_entityUi(CustomEntityDataTemplatePage.java:1)
    at common.entityfeed.ui.AbstractEntityFeedPage.hook_init_entityUi(AbstractEntityFeedPage.java:58)
    at common.page.GenericEntityPage.<init>(GenericEntityPage.java:827)
    at common.page.GenericEntityPage.<init>(GenericEntityPage.java:817)
    at common.entityfeed.ui.AbstractEntityFeedPage.<init>(AbstractEntityFeedPage.java:48)
    at core.customentity.CustomEntityDataTemplatePage.<init>(CustomEntityDataTemplatePage.java:45)
    at core.apexpages.components.ApexGenericPageComponent.getGenericEntityPage(ApexGenericPageComponent.java:139)
    at core.apexpages.components.ApexGenericPageComponent.getPageComponentizer(ApexGenericPageComponent.java:115)
    at core.apexpages.components.ApexGenericPageComponent.getComponentizer(ApexGenericPageComponent.java:243)
    at core.apexpages.components.ApexDetailComponent.beforeEncode(ApexDetailComponent.java:174)
    at core.apexpages.components.framework.util.ApexComponentUtil$3.visit(ApexComponentUtil.java:1498)
    at core.apexpages.components.framework.util.ApexComponentUtil$1.call(ApexComponentUtil.java:1038)
    at core.apexpages.components.framework.util.ApexComponentUtil$1.call(ApexComponentUtil.java:1)
    at core.apexpages.components.framework.util.ApexComponentUtil._visitComponents(ApexComponentUtil.java:1061)
    at core.apexpages.components.framework.util.ApexComponentUtil._visitChildrenOnce(ApexComponentUtil.java:1099)
    at core.apexpages.components.framework.util.ApexComponentUtil._processChildren(ApexComponentUtil.java:1085)
    at core.apexpages.components.framework.util.ApexComponentUtil.access$5(ApexComponentUtil.java:1079)
    at core.apexpages.components.framework.util.ApexComponentUtil$1.call(ApexComponentUtil.java:1042)
    at core.apexpages.components.framework.util.ApexComponentUtil$1.call(ApexComponentUtil.java:1)
    at core.apexpages.framework.context.VFContextServiceImpl.run(VFContextServiceImpl.java:2867)
    at core.apexpages.framework.context.VFContextServiceImpl.runWithComponentContext(VFContextServiceImpl.java:2748)
    at core.apexpages.framework.context.VFContextServiceImpl.runWithComponentContextIfDiff(VFContextServiceImpl.java:2704)
    at core.apexpages.framework.context.VFContextServiceImpl.runWithComponentContextIfDiff(VFContextServiceImpl.java:2699)
    at core.apexpages.components.framework.util.ApexComponentUtil._visitComponents(ApexComponentUtil.java:1063)
    at core.apexpages.components.framework.util.ApexComponentUtil._visitChildrenOnce(ApexComponentUtil.java:1099)
    at core.apexpages.components.framework.util.ApexComponentUtil._processChildren(ApexComponentUtil.java:1085)
    at core.apexpages.components.framework.util.ApexComponentUtil.access$5(ApexComponentUtil.java:1079)
    at core.apexpages.components.framework.util.ApexComponentUtil$1.call(ApexComponentUtil.java:1042)
    at core.apexpages.components.framework.util.ApexComponentUtil$1.call(ApexComponentUtil.java:1)
    at core.apexpages.components.framework.util.ApexComponentUtil._visitComponents(ApexComponentUtil.java:1061)
    at core.apexpages.components.framework.util.ApexComponentUtil._visitChildrenOnce(ApexComponentUtil.java:1099)
    at core.apexpages.components.framework.util.ApexComponentUtil._processChildren(ApexComponentUtil.java:1085)
    at core.apexpages.components.framework.util.ApexComponentUtil.access$5(ApexComponentUtil.java:1079)
    at core.apexpages.components.framework.util.ApexComponentUtil$1.call(ApexComponentUtil.java:1042)
    at core.apexpages.components.framework.util.ApexComponentUtil$1.call(ApexComponentUtil.java:1)
    at core.apexpages.components.framework.util.ApexComponentUtil._visitComponents(ApexComponentUtil.java:1061)
    at core.apexpages.components.framework.util.ApexComponentUtil.visitComponents(ApexComponentUtil.java:953)
    at core.apexpages.components.framework.util.ApexComponentUtil.doBeforeEncode(ApexComponentUtil.java:1444)
    at core.apexpages.components.framework.context.ApexPagesAjaxViewRoot.encodeAll(ApexPagesAjaxViewRoot.java:79)
    at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:566)
    at core.apexpages.components.framework.context.ApexViewHandlerImpl.renderView(ApexViewHandlerImpl.java:251)
    at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:106)
    at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:178)
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:109)
    at core.apexpages.framework.ApexPagesLifecycleImpl.phase(ApexPagesLifecycleImpl.java:164)
    at core.apexpages.framework.ApexPagesLifecycleImpl.render(ApexPagesLifecycleImpl.java:95)
    at visualforce.VisualforceServiceImpl$1.call(VisualforceServiceImpl.java:262)
    at visualforce.VisualforceServiceImpl$1.call(VisualforceServiceImpl.java:1)
    at core.apexpages.framework.context.VFContextServiceImpl.run(VFContextServiceImpl.java:2867)
    at core.apexpages.framework.context.VFContextServiceImpl.runWithComponentContext(VFContextServiceImpl.java:2803)
    at core.apexpages.framework.context.VFContextServiceImpl.runWithComponentContextIfDiff(VFContextServiceImpl.java:2704)
    at visualforce.VisualforceServiceImpl.invokePage(VisualforceServiceImpl.java:179)
    at core.apexpages.framework.ApexViewServlet.handlePage(ApexViewServlet.java:348)
    at common.request.servlet.BaseApplicationServlet.serviceInternal(BaseApplicationServlet.java:138)
    at common.request.servlet.BaseApplicationServlet.doService(BaseApplicationServlet.java:74)
    at common.request.servlet.ProtectedHttpServlet.service(ProtectedHttpServlet.java:36)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:667)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1439)
    at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:522)
    at core.apexpages.framework.ApexViewFilter.doFilter(ApexViewFilter.java:28)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:194)
    at core.apexpages.framework.ApexViewXMLFilter.doXmlFilter(ApexViewXMLFilter.java:23)
    at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:281)
    at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:379)
    at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:507)
    at core.apexpages.framework.ApexViewFilter.doFilter(ApexViewFilter.java:28)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at klein.filter.JettyStreamWriterAdaptorFilter.doFilter(JettyStreamWriterAdaptorFilter.java:105)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at sfdc.commons.filters.cookie.CookieCatalogFilter.doFilter(CookieCatalogFilter.java:78)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at security.services.validator.VulnerabilityCheckFilter.doFilter(VulnerabilityCheckFilter.java:70)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at system.filter.SeparateDomainRedirectFilter.doFilter(SeparateDomainRedirectFilter.java:148)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at core.dns.filter.CustomDomainMappingFilter.doFilter(CustomDomainMappingFilter.java:210)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at core.dns.filter.SiteRedirectMappingFilter.doFilter(SiteRedirectMappingFilter.java:114)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at core.dns.filter.BandwidthMeterFilter.doFilter(BandwidthMeterFilter.java:125)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at system.filter.OrgDomainFilter.doFilter(OrgDomainFilter.java:59)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at system.filter.StatsOnlyFilter.doFilter(StatsOnlyFilter.java:85)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at org.eclipse.jetty.servlets.UserAgentFilter.doFilter(UserAgentFilter.java:82)
    at org.eclipse.jetty.servlets.GzipFilter.doFilter(GzipFilter.java:290)
    at sfdc.commons.filters.gzip.CommonGzipFilterProxy.doFilter(CommonGzipFilterProxy.java:27)
    at sfdc.commons.filters.gzip.CommonGzipFilter.doFilter(CommonGzipFilter.java:31)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at system.filter.BasePreGzipFilter.doFilter(BasePreGzipFilter.java:197)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at system.filter.RedirectFilter.doFilter(RedirectFilter.java:211)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at sfdc.commons.filters.modifyparam.ModifiableParameterFilter.doFilter(ModifiableParameterFilter.java:46)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at klein.filter.MultiPartFilter.doFilter(MultiPartFilter.java:117)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at com.force.http.routing.RoutingFilter.doFilter(RoutingFilter.java:73)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at system.filter.InstanceRedirectFilter.doFilter(InstanceRedirectFilter.java:860)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at sfdc.commons.filters.routing.CommonRemoteAddrFilter.doFilter(CommonRemoteAddrFilter.java:78)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at system.filter.LegacyJSPFilter.doFilter(LegacyJSPFilter.java:212)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at routing.ios.IosRoutingFilter.doFilter(IosRoutingFilter.java:84)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at core.feeds.notification.tracking.ClickTrackingFilter.doFilter(ClickTrackingFilter.java:84)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at core.dns.filter.SitesRuntimeForwardingFilter.requestIsNotForSites(SitesRuntimeForwardingFilter.java:208)
    at core.dns.filter.SitesRuntimeForwardingFilter.doFilterInternal(SitesRuntimeForwardingFilter.java:487)
    at core.dns.filter.SitesRuntimeForwardingFilter.doFilter(SitesRuntimeForwardingFilter.java:247)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at core.dns.filter.SitesProxyCachingFilter.doFilter(SitesProxyCachingFilter.java:45)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at routing.filter.LoadBalancerFilter.doFilter(LoadBalancerFilter.java:80)
    at routing.loadbalancer.SfdcLoadBalancerFilter.doFilter(SfdcLoadBalancerFilter.java:54)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at common.util.database.ZeroDowntimeSpinModeFilter.doFilter(ZeroDowntimeSpinModeFilter.java:60)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at system.orgdomain.OrgDomainLoadBalancerFilter.doFilter(OrgDomainLoadBalancerFilter.java:88)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at sfdc.commons.filters.context.CommonStackableContextWatchingFilter.doFilter(CommonStackableContextWatchingFilter.java:193)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at sfdc.commons.filters.context.CommonContextReleaseFilter.doFilter(CommonContextReleaseFilter.java:80)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at system.filter.SessionNeverEstablishedLogFilter.doFilter(SessionNeverEstablishedLogFilter.java:61)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at com.force.http.routing.RoutingFilter.doFilter(RoutingFilter.java:73)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at com.force.http.routing.RoutingFilter.handleFilter(RoutingFilter.java:122)
    at com.force.http.routing.RoutingFilter.doFilter(RoutingFilter.java:79)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at system.filter.Immediate404Filter.doFilter(Immediate404Filter.java:95)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at system.filter.ResponseHeaderFilter.doFilter(ResponseHeaderFilter.java:166)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at sfdc.commons.filters.logging.CommonAccessLogFilter.doFilter(CommonAccessLogFilter.java:54)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at sfdc.commons.filters.context.CommonRequestIdFilter.doFilter(CommonRequestIdFilter.java:43)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at system.filter.RegulatorWaitTestFilter.doFilter(RegulatorWaitTestFilter.java:61)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at system.filter.RegulatorFilter.doFilter(RegulatorFilter.java:86)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at system.filter.RequestPathSecurityFilter.doFilter(RequestPathSecurityFilter.java:70)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at sfdc.commons.filters.encoding.CommonRequestEncodingFilter.doFilter(CommonRequestEncodingFilter.java:86)
    at system.filter.RequestEncodingFilter.doFilter(RequestEncodingFilter.java:56)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1410)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:430)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1033)
    at org.eclipse.jetty.rewrite.handler.RegexServletHandler.doScope(RegexServletHandler.java:218)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:967)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
    at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:317)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
    at klein.handler.SfdcJettytHandler.handle(SfdcJettytHandler.java:92)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
    at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:126)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
    at org.eclipse.jetty.server.Server.handle(Server.java:368)
    at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:498)
    at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:974)
    at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1036)
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:640)
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:231)
    at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:680)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:35)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
    at java.lang.Thread.run(Thread.java:745)

Best Answer

It looks your system admin profile may not have one of these permission:-

  1. License to access that managed package.
  2. Access to the visualforce page.
  3. Access to the class the visualforce page calls.
  4. Access to Task or Event object.
Related Topic