Cirra AI Article
Salesforce Permission Set Works in Sandbox, Fails in Production
Entitlement preflight for one failed Salesforce permission set assignment in 2026: the documented vlocity_ins namespace error, Sales Console PSL error, license layers, Option A or B fixes, and a read-only AI inventory.

Summary
- 01A successful sandbox assignment does not prove production entitlement. The documented vlocity_ins explanation is specific to that package and does not establish a rule for every sandbox.
- 02Separate the base user license, permission set license, feature license, managed-package license and permission set. A permission set with License: None creates no entitlement for its recipient.
- 03Trace the referenced namespace components before choosing a remedy. Assign the required license when the components are needed; remove access only when the dependency is verified as unused.
- 04Keep inventory read-only and record its source, connected user and timestamp. Label inaccessible information unknown and compare the results against native Setup before acting.
- 05After owner approval, apply one fix, retry the intended assignment, read back the assignment records and test both the needed feature and a negative case. Confirm commercial entitlement with the license owner.
Inside this article
- 01Executive Summary
- 02Introduction and Background
- 03The Entitlement Layers Behind One Failed Assignment
- 04Working the Documented vlocity_ins Example
- 05Building the Preflight for One Assignment
- 06Using an AI Assistant for the Inventory Step
- 07Choosing, Applying and Verifying the Fix
- 08Data Analysis and Evidence
- 09Implications and Future Directions
- 10Frequently Asked Questions (FAQs)
- 11Conclusion
Executive Summary
When a permission set assigns cleanly in a sandbox and then fails in production, the failing layer is usually entitlement (what the org has licensed for that user), not the permission set itself. Salesforce Help documents one concrete case: in a production org with the Vlocity Insurance managed package, assigning a permission set can fail with the message "User requires namespace entitlement for namespaces: [vlocity_ins]" [1]. The article's stated cause is namespace-scoped licensing: a user cannot be granted access to managed-package components they are not licensed to use [1]. The article is scoped to production orgs with that package installed [1], and it explains that the error does not typically appear in a sandbox because sandboxes operate on a site-wide license basis. This guide treats that as one documented, package-specific pattern and does not generalize it to every package or every sandbox.
Salesforce separates entitlement from permission.
- User license and PSL: every user needs a user license, a permission set license (PSL) entitles access to features the user license does not include [2], and Salesforce Ben notes a PSL may be mandatory before certain permission sets can be assigned [3].
- Package licenses: managed packages add a package-license layer with allowed and used seat counts [4].
- Sandbox caveat: a sandbox result is a test result. Trailhead states that a sandbox and its production org act as independent orgs [5], so a passing sandbox assignment cannot, by itself, prove that production holds the entitlement.
Salesforce Help offers two remedies for the documented case.
- Option A applies when the components are needed: confirm the user genuinely needs access, then assign the Vlocity Insurance Managed Package License [1] or the appropriate PSL.
- Option B applies only when the components are unused: remove access to those components and perform end-to-end testing [1].
- Capacity: neither option equals "buy another license". Capacity is whatever the org's own Setup pages show [6], and the commercial entitlement is confirmed with the organization's license owner.
The practical deliverable is a seven-step preflight for one failed assignment: preserve the exact error, separate the license layers, trace permission-set components to namespaces, classify the gap, inventory read-only with provenance, apply one approved fix, then retry once, read back and test.
- Inventory: it can be built from standard API objects such as PermissionSetAssignment [7] and PermissionSetLicense, whose total and used counts are exposed as fields [8].
- AI assistance: any AI assistant doing this works only inside the connected user's permissions [9], and the Model Context Protocol (MCP) specification expects explicit user consent before tool invocation [10].
- Release: the reference release is Salesforce Winter '27, API version 68.0 [11].
- Limits of this guide: no pricing, savings or capacity figure is asserted: where inventory is inaccessible, it stays labeled unknown.
Introduction and Background
An administrator, consulting partner or RevOps (revenue operations) analyst prepares a production user for access to a feature. The permission set was tested in a sandbox, the assignment worked, and the production assignment then fails with a license or entitlement message. The decision to make is narrow: does the failure need an existing license assigned, an escalation to the vendor or license owner, or removal of a dependency the user never needed? This guide answers that for one failed assignment. It is deliberately not a license taxonomy, a pricing guide, a profile migration guide or an offboarding checklist.
The reference org release is Salesforce Winter '27 (API version 68.0, as cited in the Executive Summary). Salesforce Admins listed sandbox preview beginning August 28 and production arrival on September 4, October 2 or October 9 depending on instance [12]. Because the date depends on the instance, a team should record the release actually running in the target org rather than assume it. The same record should hold the package edition and version, the base user license and the actual target org, since the same permission set name can behave differently in two orgs.
Why can a sandbox differ from production at all? Salesforce describes a sandbox as copying production "shape", including licenses, features and limits, plus metadata and varying amounts of data [13]. Trailhead adds that production license changes must be pushed to a sandbox if the test environment is to mirror production [5], and that in many cases a refresh aligns the sandbox's licensing information [5]. A matching tool can update a sandbox without a refresh [5].
Publishers of licensed managed packages also have their own sandbox behavior: the License Management App (LMA) documentation says a free trial package installed in a sandbox org is treated specially, and it records whether a license belongs to a package installed in a sandbox. Other publishers document their own choices: Conga says all of its sandbox orgs are provisioned as trial licenses [14] and that it gives an unlimited site license in all sandboxes [14], and a community reply says a different package gives a site license in sandboxes [15]. These are publisher-specific practices, not Salesforce rules. One tooling vendor asserts that managed-package licenses are used only when a package is installed in production [16]; that is a third-party statement, not Salesforce wording, and it is cited here only to show why teams expect sandboxes to be permissive.
None of this proves a universal rule. The documented vlocity_ins article is package-specific, and the Sales Console article discussed later is a second, differently scoped example. The sections below therefore build a method, not a blanket explanation. For the broader permission model and for the license-type overview, readers can use Salesforce's own Help and the independent license guide from Salesforce Ben, which introduces license categories and where consumption is checked [3]; this guide does not repeat them. Trailhead's licensing module adds that a user may be assigned one or more PSLs for functionality outside the user license [17].
The Entitlement Layers Behind One Failed Assignment
Step 1: Preserve the evidence before interpreting it
Record the following before touching anything:
- Exact error text as shown in production, copied rather than paraphrased.
- Permission-set API name and the user ID of the intended recipient.
- Namespace named in the message, if any.
- Package edition and version in both source and target, plus the base user license and the actual target org.
- Release running in the target org (Winter '27 or otherwise).
Then confirm the sandbox and production permission sets refer to the same intended feature and the same package version before reading any mismatch as a licensing issue. Package versions matter because permission sets shipped inside a managed package cannot be edited by the subscriber [18], and deployment tooling documents managed-object errors on permission sets when source and target differ [19]. A message such as "Cannot modify managed object" is a different problem from an entitlement message, and the evidence record is what keeps the two apart. Community Q&A shows the same raw string can hide different causes: one thread quotes a custom-permission variant of the license error [20], and an answer explains the message as the permission set holding permissions that require a PSL [21].
Step 2: Separate the layers
Table 1 below separates the layers that this guide keeps distinct. It is a working aid built from Salesforce documentation, and each row states what that layer does and what it does not do.
| Layer | What it entitles or grants | Where to read it | What it does not do |
|---|---|---|---|
| Base user license | Baseline access; each user has one [3] and one is required. A license type provides a baseline level of access to features. | Profile's user license; UserLicense counts of licenses assigned to active users. | Does not by itself grant package or add-on features. |
| Permission set license (PSL) | Entitles access to additional features not in the user license [22]; extends the user license. | Company Information, with seat information; PermissionSetLicense total and used fields. | Grants access but cannot deny it; does not itself contain the feature permissions. |
| Feature license | Enables specific features; a user can hold several [3]. | Company Information, feature licenses the company purchased. | Not a substitute for the permission set that grants component access. |
| Managed-package license | Seats for a licensed managed package: allowed and used counts. | Installed Packages, Manage Licenses; PackageLicense status values Active, Expired, Free or Trial [4]. | License information exists only for managed packages; assignment is not reportable through the standard route [23]. |
| Permission set (the grant) | Actual functionality: object, field and Apex class access. | PermissionSet and its child permission records. | A permission set with no license does not create licenses for its recipient. |
Two points from the table deserve emphasis. First, a permission set can be tied to either a user license or a PSL [24], and the Metadata API exposes the same choice in its license element. Second, Salesforce says to select None when users with different licenses will receive the permission set [25], and that a set tied to a license can include only what that license entitles. A "License: None" permission set therefore carries no entitlement of its own; whatever licensing the recipient needs must already be in place. Help states that with None selected, the PSL must be assigned manually to users [26]. Permission set groups follow the same rule: Trailhead notes a user cannot be assigned to a group if their license does not permit its permissions [27].
That auto-assignment behavior explains why general rules mislead. The PSL documentation notes that users with a license that comes with standard permission sets are automatically assigned the related PSL [28], yet it also warns that you might need to assign a PSL before you can assign certain permissions, a caution Salesforce Ben repeats [3]. Both statements are true; which one applies depends on the product and how the permission set was built. This guide therefore does not claim every PSL must always be assigned first, nor that it never must.
Working the Documented vlocity_ins Example
What the article says, and what it does not
The Salesforce Help article is titled "vlocity_ins Namespace Entitlement Error Assigning Permission Set" [1] and is dated September 8, 2026. It gives the exact error text [1] and the reason: managed-package licensing is scoped by namespace, so access to components cannot be granted to a user who is not licensed for them. It applies to production orgs with the Vlocity Insurance package.
Two limits apply. Salesforce Help explains the sandbox difference for this package: the error does not typically appear in a sandbox because sandboxes operate on a site-wide license basis, where licenses are self-authorized, so the same permission set may assign successfully in a sandbox but fail in production. That explanation is documented for this package only and is not a guarantee about all sandboxes. And the article does not state a general rule for other packages. The namespace itself is a Vlocity convention: a community listing maps vlocity_ins to Insurance and Health and vlocity_ps to Public Sector [29], and Industries deployments are described by one tooling vendor as Vlocity configuration data plus metadata [30]. Treat the namespace as a pointer to a package to look up, not as proof of which license type is needed.
Inventory the dependency before choosing a fix
The permission set that fails contains references to components in the namespace. Before deciding anything, list them. The standard API objects expose this directly. Object permissions and field permissions exist only for permission sets, not profiles [31]; field permissions use the full API name in the form SobjectType.Field; and Apex class access sits in setup entity access, whose valid types include ApexClass [32]. Because access is stored as records and a missing record means no access, these queries list only what the permission set grants, which is exactly what the preflight needs. Every profile also has a backing permission set, so inventories typically filter those out.
For each referenced object, field and class carrying the namespace prefix, ask one question: does this user's job need it? The answer decides between the two remedies.
The two remedies in the Help article
- Option A, assign the license when the components are needed. Confirm the user genuinely needs access to the namespace components, assign the Vlocity Insurance Managed Package License or the appropriate PSL [1], reassign the permission set and verify access.
- Option B, remove the dependency only when it is unused. Remove access to the namespace components [1] after verifying they are genuinely unused, reassign, and perform end-to-end testing to confirm that removing the access broke nothing.
Option B only hides the error by removing a dependency. If the components are required, Option B converts a visible licensing error into a silent functional gap, which is why the verification step is mandatory and why owner approval is needed for either path.
Error-to-next-check examples, scoped
The list below pairs observed messages with the next diagnostic step. Each is scoped to its source and is not a rule for other products.
- "User requires namespace entitlement for namespaces: [vlocity_ins]." Scope: production orgs with Vlocity Insurance. Next check: list
vlocity_inscomponents in the permission set, confirm the user's job needs them, then look for a namespace PSL or the Vlocity Insurance Managed Package License on the user. - "The user license doesn't allow the permission: Sales Console." Scope: the Sales Console article dated July 17, 2026 [33]. The stated cause is that the user lacks the required PSL [33]. Next check: open the user's Permission Set License Assignments related list and look for the Sales Console license; the documented fix is to check its box and save. Verify product prerequisites first.
- "This permission set contains an object that requires a license." Scope: a Stack Exchange thread that quotes the message. Next check: assign the user to the related PSL, then retry. A Stack Exchange thread quotes the same instruction in the form "assign the user to the related permission set license" [34].
- "The user license doesn't allow the permission" (a variant string). A vendor support article documents it for a permission set not intended for a Salesforce Platform license [35], with removal of the unsupported access as one fix [35]. Next check: compare the permission set's license association with the base user license [7].
- Generic API status codes. FIELD_INTEGRITY_EXCEPTION and LICENSE_LIMIT_EXCEEDED are broad status codes. Okta's documentation adds that this error is thrown by Salesforce during its license check, not by the provisioning tool [36]. The generic definition does not prove which entitlement is missing; read the full message text.
The Sales Console example matters because it shows the same symptom with a different cure: a PSL assignment on the user record, not a namespace package license. It also shows why the error string, not the symptom, drives the next step.
- Confirm the user needs the namespace components, then assign the Vlocity Insurance Managed Package License or the appropriate PSL.
- Reassign the permission set and verify access.
- Remove access to the namespace components only after verifying they are unused.
- Reassign and perform end-to-end testing to confirm that removing access broke nothing.
These remedies come from the documented vlocity_ins case. Both require owner approval. Removing a required dependency converts a visible licensing error into a silent functional gap.
A sandbox success should travel with a note: it is a test result, not evidence of production entitlement.
Building the Preflight for One Assignment
The seven steps at a glance
The full preflight is short enough to keep beside the ticket:
- Step 1, preserve. Capture the exact error, API name, user ID and namespace.
- Step 2, separate. Place each layer (base license, PSL, feature license, package license, permission set) in the matrix.
- Step 3, trace. List the namespace components the permission set references.
- Step 4, classify. Decide: unassigned entitlement, unavailable capacity, wrong license type, missing provisioning, or unneeded dependency.
- Step 5, inventory. Use read-only queries or an assistant, with provenance for every row.
- Step 6, approve and fix. Apply Option A or Option B with owner approval.
- Step 7, verify. Retry the single assignment, read it back, test the feature and one negative case.
Steps 3 and 4: Classify the gap
After the evidence and inventory are in hand, place the failure in exactly one of these categories. They have different owners, which is the point of the exercise.
- Entitlement purchased but unassigned. The organization already holds the license, a seat is visible as available, and the user simply lacks the assignment. Owner: the administrator, with approval.
- Capacity unavailable. The license exists but total and used counts show no free seat. Okta documents a provisioning failure of exactly this kind, "All Sales User permission set licenses are in use" [37], and attributes it to insufficient licenses on the Salesforce tenant [37]. Owner: the license owner decides whether to reallocate or acquire; this guide does not price that.
- Wrong license type. The permission set is tied to a license the user's base license cannot support, as in the Platform-license example [35]. Owner: the permission set designer.
- Missing product or package provisioning. The package or PSL is not present in the production org at all, or the license record is expired or otherwise inactive. A Stack Exchange answer reports one case where the missing license could only be added by opening a ticket with Salesforce [38]. Owner: the vendor or license owner.
- Unneeded dependency. The permission set references the namespace but the user's work never touches it. Owner: the permission set owner, after verification.
An assignment error does not by itself mean another license must be purchased. Confirm the commercial entitlement with the organization's license owner before anyone assumes either direction. Counts of visible assignments and required recipients can be compared only with that org's actual data. Where Company Information shows a count, note that the PSL count can lag (see the Data Analysis section); where the package-license assignment cannot be reported on the standard route, record capacity as unknown.
The preflight matrix
Table 2 below is the record to complete for each failed assignment. One row is one assignment. The example row is illustrative only and invents no counts.
| Field | What to record | Hypothetical Example (not real data) |
|---|---|---|
| Org / release | Target org, Winter '27 or actual release, API version | Production; release read from the org |
| User | User ID, base user license | User ID recorded; base license read from profile |
| Permission set | API name, namespace prefix | Example_PS; namespace from the error |
| Referenced namespace/component | Objects, fields, classes with the prefix | Listed from object, field and class permission records |
| Required entitlement source | PSL, package license or feature license | To be confirmed against vendor documentation |
| Visible license assignment | What the user holds now | From user related lists and assignment records |
| Capacity status | Total vs used, or unknown | Unknown unless the org's own count is visible |
| Business owner | Who needs the feature | Named owner |
| Proposed action | Option A, Option B or escalate | Pending verification |
| Approval | Owner approval recorded | Not yet obtained |
| Functional test | Needed feature plus one negative case | To run after the approved change |
The matrix works because every cell has a source. A blank or "unknown" entry is a valid finding; an invented one is not. The most common failure of the process is a cell filled from memory.
- 01Preserve and separate
Capture the exact error, permission-set API name, user ID and namespace, then distinguish the license layers from the permission set.
- 02Trace dependencies
List the namespace components referenced by the permission set before choosing a fix.
- 03Classify the gap
Distinguish unassigned entitlement, unavailable capacity, wrong license type, missing provisioning and an unneeded dependency.
- 04Inventory with provenance
Use read-only queries or an assistant and retain provenance for every inventory row.
- 05Approve and fix
Apply Option A or Option B with owner approval, according to whether the components are needed.
- 06Retry, read back and test
Retry the single assignment, read back the records, then test the feature and a record or tab the user must not reach.
Using an AI Assistant for the Inventory Step
Read-only first, with provenance
The inventory spans several objects: the permission set's component records, the visible user assignments, and the namespace references. Joining them by hand is slow and error prone, which makes this step a reasonable fit for an AI assistant, provided it starts read-only and every row carries provenance (which query, which object, which user's permissions produced it). Inaccessible inventory must be labeled unknown, never inferred.
Access rules shape what such an assistant can see. Access to the assignment and license objects is itself permission-gated, so an assistant connected as a user without the required permissions can return partial or empty results, which must be labeled unknown. Salesforce's own hosted MCP servers state that every tool call runs with the permissions of the user who authorized the connection [9], respects field-level security, and uses no service accounts or machine-to-machine flows. A hosted read server cannot create, update or delete anything [39], and a metadata-grounding server returns only metadata the authorized user may access. Winter '27 also filters profile visibility: users can only see their own profile name unless an exception permission applies, as one Salesforce Admins post describes [40], so an inventory run as a user without broad visibility may list incomplete profile data and should say so.
Compare the assistant's output against native Setup. The Company Information page is the quickest overview of license consumption [3], Setup shows seats for PSLs, and the Lightning Usage app also tracks active licenses. Salesforce Ben also suggests a custom report type to track license assignments per user and at scale [3]. A discrepancy is a finding to explain, not to smooth over.
Provenance rules for every inventory row
- Source object. Name the object queried (assignment, license, permission or package-license record).
- Connected user. Record whose permissions produced the row.
- Timestamp. Note when it was read, because license counts can lag.
- Unknown label. Mark any inaccessible inventory as unknown, never as zero.
- Native comparison. Cross-check against the Setup license pages before acting.
What an assistant cannot do
An assistant cannot provision an unpurchased entitlement, bypass licensing, or replace a release tool. The MCP specification says hosts must obtain explicit user consent before invoking any tool [10], that tools represent arbitrary code execution and need caution [10], and that there should be a human in the loop able to deny invocations [41]. Tool annotations such as read-only hints are untrusted unless they come from trusted servers [41], and Salesforce itself notes that annotations are hints, not enforcement. Hosted servers are disabled by default until an administrator enables them [42]. For local development, the Salesforce DX MCP server requires orgs to be explicitly authorized on the user's computer before it can access them [43].
Table 3 below compares ways to run the read-only inventory step. Only Salesforce's own options are listed.
| Option | Role in this step | Boundary |
|---|---|---|
| Native Setup pages and SOQL | Authoritative license counts and assignments the user can see | Limited to the signed-in user's permissions; manual joins |
| Salesforce hosted MCP (read-only server) | Reads records through an MCP client | Runs as the authorizing user; enabled by an administrator |
| Salesforce DX MCP server (local) | Developer-side access to authorized orgs [43] | Requires orgs authorized on the local machine |
The table shows that the choice is not about replacing Setup. Each option inherits the connected user's limits, so a user who cannot see license counts will get an assistant that cannot either. Cirra, the publisher of this article, is one vendor in this category; this mention is a disclosure, not evidence for any claim above.
Choosing, Applying and Verifying the Fix
Steps 5 and 6: Decide with an owner
Pick the remedy by matrix row, not by reflex. When the components are needed, Option A applies. The assignment method depends on the layer: a PSL can be assigned on the user record through the Permission Set License Assignments related list or for many users from the license's detail page; a managed-package license is assigned through Manage Licenses on Installed Packages [44]. Check first whether the PSL is already associated with a permission set, because assigning it again by hand may be unnecessary. When the components are unused, Option B applies, with the verification described earlier.
Avoid four reflexes:
- Broad cloning of the permission set, which copies the dependency.
- Stripping all package access, which removes components other users need.
- Changing the base user license, which alters access everywhere.
- Assuming the answer is to buy more, before the license owner confirms what is already held.
Each of these trades a visible licensing error for a broader, harder-to-audit change.
One ordering point is documented in community and vendor sources rather than as a universal rule: a provisioning forum post states the PSL must be given before the permission set [45], and another thread reports splitting account creation with the PSL from the later permission-set step [46]. A practitioner write-up for an integration user likewise assigns the PSL first, after which the permission set assigns without error [47]. Treat that as a symptom to test in the specific product, consistent with the manual-assignment case where a None-licensed set does not bring a PSL with it. Deployment adds a further sequencing point: Gearset documents that assignments are data rather than metadata, so deploying a permission set together with its assignments takes two steps [48].
Step 7: Retry once, read back, test
Retry the single intended assignment, then read it back from the assignment records rather than trusting a success message. Test the needed feature with the actual user's permitted workflow, plus one negative case: a record or tab the user must not reach. Record the source and target difference found and any unresolved entitlement questions before wider rollout. If the assignment succeeds but the feature does not work, the effective permissions are still incomplete, which is a permission problem, not a licensing one.
A blank or "unknown" entry is a valid finding; an invented one is not.
Data Analysis and Evidence
This topic has few public quantitative benchmarks, and no measured frequency for the vlocity_ins error is publicly documented. The numbers that do exist are documented limits, API versions, dates and refresh intervals. They are collected below and should be read as reference points, not outcomes.
- API versions. PermissionSetLicense is available from API 29.0 [8]. Winter '27 ships 68.0 [11], so every object above is available in the reference release.
- Release dates. Sandbox preview began August 28 [12]; production arrival is September 4, October 2 or October 9 by instance [12]. A team auditing a sandbox should confirm which release and instance dates applied.
- Refresh lag. PSL counts on Company Information can take up to 24 hours to refresh [6]. A freshly assigned license may therefore not appear in the count immediately; that is a reading delay, not necessarily an error.
- Sandbox refresh interval. One Trailhead module lists the Full sandbox as refreshable once every 29 days [49], and refreshing destroys customizations made in the sandbox since the last refresh [49]. A refresh is not a casual way to realign licensing.
- Package license seats. Publishers can allocate up to 99,000,000 seats per subscriber license [50]. A package license count can therefore be effectively unlimited for a site-licensed package, so a visible count should be read with the package's license type in mind.
- Status values. PackageLicense status takes one of Active, Expired, Free or Trial; the PermissionSetLicense reference says that if the status is Disabled, the permission set license has expired [8].
Table 1 through Table 3 above carry the structure; the figures here add the timing context. Three observations follow. First, the 24-hour count lag and the possibility of a site-licensed package mean that "the count says no seat" and "the count says a seat exists" can both be stale, so the license owner's record is the authority. Second, the API-version facts show the inventory objects are long-standing, which supports building the preflight on stable queries instead of release-specific features. Third, the absence of a published error-frequency figure means any claim that "most" production assignment failures have a given cause would be unsupported, and this guide makes none.
For a single org, only the org's own data answers the quantitative question. Compare the count of visible PSL assignments, such as those a documented SOQL pattern returns, with the number of required recipients. If the required recipient count exceeds the visible total for a PSL, that is a capacity finding for the license owner. If it does not, the likely cause is assignment, not capacity. Where package-license assignments cannot be reported on, the figure remains unknown and should be recorded that way.
Implications and Future Directions
For consulting partners, the main implication is a handoff discipline. A sandbox success should travel with a note: it is a test result, not evidence of production entitlement. The handoff record should contain the matrix row, the licensing owner's confirmation and the functional test result. This keeps access work from being closed on the strength of a sandbox pass alone.
For administrators, the documented example shows why permission-set design matters. A set that bundles namespace components for every possible user forces a license question onto users whose jobs never touch those components. Separating packaged-component access into its own set, so that only licensed users receive it, shrinks the number of assignments that can fail. The related Option B logic, removing unused dependencies, is safe only after verification and testing.
For AI-assisted administration, the direction is stricter provenance, not more autonomy. As MCP clients gain write tools, the protocol's own guidance remains that tools warrant caution [10] and human control [41]. Teams should keep the first pass read-only, record which user's permissions produced each row, and require approval for any change. Salesforce's hosted servers already ship read-only options for this purpose.
Open questions remain, and this guide does not resolve them. Package licensing and automatic-assignment behavior vary by product. The vlocity_ins article is dated September 8, 2026 and may be revised, so it should be re-read before use. Future Winter '27 and later release notes may change assignment behavior or visibility, as the profile-visibility change already does [40]. Readers should verify package changes and the org's current release at the time of work.
Frequently Asked Questions (FAQs)
Why does a permission set assignment work in a sandbox but fail in production?
Because the sandbox and production are independent orgs [5], and their licensing can differ. For the documented vlocity_ins case, Salesforce attributes the production failure to namespace-scoped licensing [1]. Salesforce Help adds that the error does not typically appear in a sandbox because sandboxes operate on a site-wide license basis, so the same permission set may assign successfully there and still fail in production. That is documented for this package and is not a rule that every sandbox is more permissive.
What does "User requires namespace entitlement" mean?
It means the user lacks the license that entitles access to components in the named namespace. Next: inventory the components, then follow Option A or Option B.
Is a permission set license different from a namespace entitlement?
They are related layers. A PSL entitles features beyond the user license [22], and a managed-package license has its own allowed and used seats. For vlocity_ins, Help names both the Managed Package License and the appropriate PSL as routes, and it labels Option A, provisioning the Vlocity Insurance Managed Package License, as the recommended path when the components are needed.
Does a managed package permission set fail to assign because of the package?
Sometimes. A packaged permission set cannot be edited by the subscriber, and license-related assignment errors depend on the licensing of that package. Check the error text first, then the package license status.
What does an "insufficient access" style assignment error mean?
It depends on the full message. A generic status code is defined only broadly. The connected user's own permission to view or assign may also be involved. Read the whole message.
How can an admin tell license from namespace entitlement?
Compare the permission set's license association with the user's base license, then check whether referenced components carry a package namespace. A base-license mismatch points to a different fix than a missing namespace license.
Can a permission set deployed from sandbox be expected to work in production?
The metadata can deploy, but assignment is a separate step that needs entitlement; Gearset documents that assignments are data rather than metadata, so they deploy in a second step [48]. Deployment tooling documents several permission-set-related errors, including managed-object errors [19] and cross-reference access errors tied to the deploying user's license [51]. A deployment user whose license restricts metadata types can fail even when the permission set is correct [51], so verify the deployment user's permissions first [51].
Which API error should be troubleshot first?
Start with the full message text, not the code. Some limit errors originate in Salesforce's own license check rather than in the calling tool [36]. Generic codes such as FIELD_INTEGRITY_EXCEPTION do not identify the missing entitlement.
Conclusion
A failed production assignment after a clean sandbox test is a licensing question until shown otherwise, and the sandbox result is evidence of configuration, not entitlement; Salesforce Help notes that sandboxes operate on a site-wide license basis, so a clean sandbox assignment does not show that production holds the entitlement. The documented vlocity_ins pattern gives two remedies, assign the license when the components are needed or remove an unused dependency after verification, and a second scoped example, the Sales Console error, shows a different cure on the same symptom.
The method in this guide is deliberately small: preserve the error, separate the layers, inventory the components with provenance, classify the gap, obtain owner approval, apply one change, retry, read back and test. Unknown capacity stays unknown, and commercial entitlement is confirmed with the license owner. An AI assistant can speed the read-only inventory within the connected user's permissions and with approval, but it cannot create an entitlement. Teams that want to try the inventory step from an AI client can start with Salesforce's own tools described above.
External Sources (51)
About
Cirra AI
About Cirra AI
Cirra AI is a software company dedicated to reinventing Salesforce administration through AI-powered tooling built on the Model Context Protocol (MCP). From its headquarters in Silicon Valley, the team has built the first commercial MCP server for Salesforce administration—a hosted service that lets any MCP-compatible AI tool (Claude, ChatGPT, Cursor, and others) connect to a Salesforce org and execute admin tasks through natural language. The product gives Salesforce administrators, revenue-operations teams, and consulting partners the ability to implement configuration changes in minutes instead of hours, while respecting org permissions and maintaining full auditability. Cirra AI's mission is to "let humans focus on design and strategy while software handles the clicks." To achieve that, the company develops two complementary product lines: Salesforce Admin MCP Server – A fully hosted MCP endpoint that connects any AI tool to Salesforce in minutes via OAuth. Administrators describe what they need in plain English—create custom objects and fields, configure page layouts, manage permission sets, build flows, provision users, generate documentation—and the MCP server translates those instructions into standard Salesforce Metadata and Tooling API calls, bounded by the user's existing permissions. No local infrastructure or custom code is required: sign up, authenticate, copy the MCP URL into your AI tool, and start working. Salesforce Skills Library – An open-source collection of domain-specific skills (available at skills.cirra.ai) that supercharge AI assistants with deep Salesforce expertise. Skills cover Apex development with 150-point scoring, Flow creation and validation with 110-point scoring, Lightning Web Component development with the PICKLES architecture methodology, metadata operations, permission auditing, data and SOQL operations, org-wide health audits, architecture diagramming, and Kugamon CPQ management. The skills are installable as a single plugin for Claude Cowork, Claude Code, and OpenAI Codex, or as individual skill files for Claude web, desktop, and ChatGPT. They enable AI assistants to perform complex, multi-step Salesforce tasks independently—run a comprehensive org audit, fix issues flagged in the report, generate field descriptions at scale—without prompt-by-prompt hand-holding. Together, these products address three chronic pain points in the Salesforce ecosystem: (1) the high cost of manual administration and repetitive setup-menu navigation, (2) the backlog created by scarce expert capacity, and (3) the risk of inconsistent, undocumented changes. Early adopter feedback shows time-on-task reductions of 70–90 percent for routine configuration work.
Leadership
Cirra AI was founded in 2024 by Jelle van Geuns, a Dutch-born engineer, serial entrepreneur, and veteran of the Salesforce ecosystem with over 14 years of platform experience. Before Cirra, Jelle bootstrapped Decisions on Demand, an AppExchange ISV whose rules-based lead-routing engine is used by multiple Fortune 500 companies. Under his leadership the firm reached seven-figure ARR without external funding, demonstrating a combination of deep technical innovation and pragmatic go-to-market execution. Jelle began his career at ILOG (later IBM), where he managed global solution-delivery teams and developed expertise in enterprise optimisation and AI-driven decisioning. He holds an M.Sc. in Computer Science from Delft University of Technology and speaks frequently on AI-assisted administration, MCP integration patterns, and human-in-the-loop automation at Salesforce community events and podcasts. The leadership team includes Jeff Bajayo (VP Sales), a seasoned Salesforce and SaaS professional with over a decade of experience, and Latrice Barnett (Advisor, Marketing), who brings 10+ years of partnership and ecosystem marketing expertise from the Salesforce ecosystem.
Why Cirra AI Matters
MCP-native architecture – Rather than building a proprietary agent UI, Cirra embraces the Model Context Protocol as a universal connector, letting customers use the AI tool they already prefer—Claude, ChatGPT, Cursor, or any future MCP-compatible client—while Cirra handles the Salesforce integration layer. Deep vertical focus – The Skills Library encodes thousands of Salesforce best-practice patterns, scoring rubrics, and validation scripts that generic AI assistants lack. This domain intelligence produces higher-quality, more reliable outputs for Apex, Flows, LWC, permissions, and metadata operations than general-purpose prompting alone. Enterprise-grade security – The platform uses OAuth authentication, encrypted endpoints, and inherits the connected user's Salesforce permission model. Cirra never stores Salesforce credentials, and all actions are logged for auditability—critical requirements for regulated industries adopting AI tooling. Works for admins and partners alike – Individual administrators use Cirra to eliminate setup-menu drudgery and respond faster to business requests. Consulting firms use it to scale senior-level expertise across delivery teams, enabling more projects delivered at higher quality and lower cost through improved documentation and test coverage. Accessible to non-developers – Anyone with a paid Claude or ChatGPT subscription can install the skills and connect the MCP server. No coding, no complex integrations—just sign up and start working.
Future Outlook
Cirra AI continues to expand its capabilities with the upcoming Admin Agent (launching June 2026), which will bring fully autonomous multi-step task execution to Salesforce administration. The company is also extending platform compatibility to additional AI marketplaces and broadening its skills library to cover more Salesforce clouds and use cases. By combining open standards, domain-specific intelligence, and a relentless focus on the admin experience, Cirra AI is building the de-facto AI integration layer for Salesforce administration.
Disclaimer
This document is provided for informational purposes only. No representations or warranties are made regarding the accuracy, completeness, or reliability of its contents. Any use of this information is at your own risk. Cirra AI shall not be liable for any damages arising from the use of this document. This content was generated with assistance from artificial intelligence tools, which may contain errors or inaccuracies. Readers should verify critical information independently. All product names, trademarks, and registered trademarks mentioned are property of their respective owners and are used for identification purposes only. Use of these names does not imply endorsement. This document does not constitute professional or legal advice. For specific guidance related to your needs, please consult qualified professionals.