I’ll walk you through the complete solution based on your SuiteCloud role mapping and SuiteFlow workflow permissions setup.
Root Cause Analysis:
Your issue involves three interconnected permission layers that all need alignment:
- SuiteCloud Role Mapping: The custom role needs permissions on both the task record AND the approval custom record
- SuiteFlow Workflow Permissions: The workflow itself needs to allow the role to execute approval actions
- Custom Role Troubleshooting: Field-level permissions on custom fields added to task records
Complete Fix:
First, update the custom role permissions:
Setup > Users/Roles > Manage Roles > Project Manager
Permissions Tab:
Custom Records > Task Approval Record > Full
Lists > Task > Full
Custom Record Fields > [All new fields] > Edit
Next, verify your SuiteFlow workflow configuration. Go to Customization > Workflow > Workflows > [Your Task Approval Workflow] and check the Initiate tab. Make sure the “Available to” section includes your Project Manager role explicitly, not just through inheritance.
The critical part most people miss: workflow state transitions require separate permissions. Edit your workflow and for each approval state transition:
// Pseudocode - Workflow state permission setup:
1. Open workflow state "Pending Approval"
2. Click on the approval action trigger
3. Set "Execute as" to "Current User" (not Administrator)
4. Add role condition: IF current user has role Project Manager
5. Verify custom record write permission in action script
// This ensures permission checks happen in user context
For the custom record permission error you’re seeing, you need to add a specific permission check in any User Event scripts attached to the task record. If you have a beforeSubmit or afterSubmit script, add this validation:
if (!runtime.getCurrentUser().getPermission({
name: 'CUSTOMRECORD_TASK_APPROVAL'
}) >= 2) {
throw error.create({
name: 'INSUFFICIENT_PERMISSION',
message: 'User lacks edit access to approval records'
});
}
Custom Role Troubleshooting Checklist:
- Verify subsidiary restrictions aren’t blocking access (even in single-entity setups, check this)
- Confirm department/class/location restrictions on the role don’t conflict with task assignments
- Check if “Login Audit” shows any permission-related login restrictions
- Review the role’s “Restrictions” tab for any custom record type exclusions
Testing Steps:
- Have a user with ONLY the Project Manager role test (remove any Administrator role temporarily)
- Clear browser cache completely before testing
- Check the workflow execution log (Customization > Workflow > Workflow Instances) to see exactly where permission fails
- Enable SuiteScript debugging and check for any beforeLoad scripts that might be stripping permissions
After implementing these changes, wait 15-20 minutes for permission cache to clear across all NetSuite application servers. The combination of custom record permissions, workflow execution context, and field-level access should resolve your approval failures.
If issues persist after this, check whether any custom SuiteScript is overriding the workflow’s default behavior - sometimes custom approval logic bypasses the standard permission model.