Loading

Education Cloud: LearningProgramPlan publish fails in Program Plan Builder with generic error

Publish Date: May 27, 2026
Description

This article explains why publishing a LearningProgramPlan from the Program Plan Builder fails with a generic toast error and how to resolve it. Customers describe this as: "getting error while trying to publish LearningProgramPlan using Program Plan Builder" and "clicked Publish (or used Clone & Edit in builder) and it just shows Something went wrong." The exact error displayed at the top of the screen is: "Error notification. Something went wrong. Try again, and if the issue persists, contact Salesforce Customer Support and ask for help." The publish action triggers Salesforce to lock the parent LearningProgramPlan record while it inserts the child LearningProgramPlanRqmt records derived from the Builder's draft JSON. If a custom after-insert trigger on LearningProgramPlanRqmt issues a synchronous DML update against the same parent LearningProgramPlan (for example to flip a custom isPublished__c flag), the trigger cannot acquire the row lock and the Builder transaction fails with the generic notification. The same generic error appears when using the Clone & Edit in builder action before publish. This issue applies to Education Cloud on Lightning Experience in Enterprise, Performance, Unlimited, and Developer editions, and is tracked as Known Issue KI-65478. A separate but related symptom — "Access to entity 'LearningProgramPlan' denied. Entity: LearningProgramPlan is not API accessible" when creating or editing the record from the UI — is caused by missing object permissions on LearningProgramPlan and is addressed in Cause 2 below.

Resolution

Cause 1: Custom trigger on LearningProgramPlanRqmt updates the parent LearningProgramPlan synchronously

  1. Open the trigger handler that fires on LearningProgramPlanRqmt [LearningProgramPlanRqmt] after insert (for example, LearningProgramPlanRqmtHandler) in Setup > Custom Code > Apex Classes.
  2. Identify any direct DML against LearningProgramPlan [LearningProgramPlan] inside the after-insert path. Direct synchronous updates collide with the Program Plan Builder's row lock on the parent record and produce the publish error.
  3. Refactor the parent update to run asynchronously by enqueuing a Queueable Apex job. Create a new Apex class, for example AsyncPublishPlan, that implements Queueable and performs the update on LearningProgramPlan records inside its execute method.
  4. In the trigger handler, replace the inline update with System.enqueueJob(new AsyncPublishPlan(parentPlanIds)). Guard the call with if (!System.isQueueable()) to avoid chaining inside an already queued context.
  5. Deploy the change to the affected sandbox first, then run Apex tests for both classes.
  6. Open the LearningProgramPlan record, click the dropdown in the highlights panel, select Clone & Edit in builder, then click Publish.
  7. Confirm the issue is resolved by publishing the LearningProgramPlan from the Program Plan Builder without the "Something went wrong" toast appearing, and verifying that the child LearningProgramPlanRqmt records are created on the published plan.

Cause 2: User profile or permission set is missing access to LearningProgramPlan, producing "Access to entity 'LearningProgramPlan' denied. Entity: LearningProgramPlan is not API accessible"

  1. Navigate to Setup > Users > Permission Sets and open the permission set assigned to the affected user.
  2. Under Object Settings, open Learning Program Plan [LearningProgramPlan] and click Edit.
  3. Set Object Permissions to Read, Create, Edit, and Delete as required for the user's role.
  4. Set field-level access to Read/Edit on all fields the user must populate in the Builder, including DraftPlanContent.
  5. For Experience Cloud users, assign the standard Education Cloud for Experience Cloud Access permission set rather than a cloned copy, because cloned permission sets do not receive product updates and can lose access to newer LearningProgramPlan fields.
  6. Save the permission set and reassign it if needed via Setup > Permission Sets > [Set Name] > Manage Assignments.
  7. Confirm the issue is resolved by logging in as the affected user and creating or editing a LearningProgramPlan record from the App Launcher > Learning Program Plans without the "not API accessible" error.

Cause 3: Underlying product defect (Known Issue KI-65478)

  1. If Causes 1 and 2 do not apply (no custom triggers on LearningProgramPlanRqmt and full object permissions are confirmed), the failure matches Known Issue KI-65478 "Issue with publishing Learning Program Plan from builder."
  2. Apply the official KI-65478 workaround: create the Learning Program Plan Requirement [LearningProgramPlanRqmt] records manually instead of through the Builder's Publish action. Open the LearningProgramPlan record, navigate to the Plan Requirements related list, and click New to add each required course, elective course, or category as a LearningProgramPlanRqmt record.
  3. On the Known Issue page, click Report to register the org as affected so it receives fix notifications.
  4. Confirm the workaround is in place by opening the LearningProgramPlan record and verifying that the manually created LearningProgramPlanRqmt records appear in the Plan Requirements related list and resolve to the correct Learning Achievement.
Knowledge Article Number

005385225

 
Loading
Salesforce Help | Article