Welcome to Zuora Product Documentation

Explore our rich library of product information

Automated Process user permissions

Configure the Salesforce Automated Process user with the permissions required for Zuora Quotes automations that run as this user.

Salesforce runs Platform Event subscribers as the Automated Process user by default. When a Platform Event or Flow creates or updates a Zuora Quote or a related quote object, the transaction can invoke the Quote trigger and related Zuora Quotes code as the Automated Process user.

The transaction can fail with a query error similar to the following:

System.QueryException: No such column 'zqu__account__c' on entity 'zqu__Quote__c'. If you are attempting to use a custom field, be sure to append the '__c' after the custom field name. Please reference your WSDL or the describe call for the appropriate names.

The error can occur even when the referenced field exists and the assigned permission set appears to provide access to that field.

How the automation runs

Starting with Zuora Quotes 10.62, many package queries run in user mode. User-mode queries enforce the permissions of the user that runs the code.

Because Salesforce runs Platform Event subscribers as the Automated Process user, that user must have the object-level and field-level permissions required by the automation and the Zuora Quotes code that it invokes.

In Quotes versions before 10.65, Salesforce user-mode queries could also fail when the code was invoked by the Automated Process user, even when the required permission set was assigned. This behavior was addressed in Quotes 10.65 and later for Salesforce API version 65.0 and later.

To run the queries without an error, your admin must assign the necessary permission set to the Automated Process user.

Assign the permission set to the Automated Process user

Assign the ZQuotes_Custom_User permission set to the Salesforce Automated Process user so automated processes can access the required Zuora Quotes functionality.

  • Upgrade to Zuora Quotes 10.65 or later.

  • Use a Salesforce org that runs Salesforce API version 65.0 or later, which corresponds to Salesforce Winter '26 and later releases.

  • If your automation includes subscriber Apex that queries Zuora Quotes package objects as the Automated Process user, compile the subscriber Apex with Salesforce API version 65.0 or later.

Assign the custom permission set to the Salesforce Automated Process user so that automated processes can access the required Zuora Quotes functionality.

  1. Perform the following steps to create or select a Salesforce permission set.
    1. Use an existing custom permission set if it provides all the required access.
    2. If you do not have a suitable custom permission set, clone the Zuora Quotes End User permission set.
    3. Give the cloned permission set a unique name, such as ZQuotes_Custom_User.
    4. Remove all Visualforce page access from the cloned permission set. Salesforce does not permit assigning a permission set with Visualforce page access to the Automated Process user.
    5. Confirm that the permission set provides the required object-level and field-level access for your Flow or Platform Event automation and the Zuora Quotes code that it invokes. See User-mode query permissions for Zuora Quotes 10.62 and later.
    6. If the automation uses standard Salesforce objects or fields, add the required access through a custom permission set. Managed package permission sets cannot grant access to standard fields on standard Salesforce objects.
  2. Perform the following steps to assign the permission set to the Automated Process user.
    1. Open the Salesforce Developer Console.
    2. Select Debug > Open Execute Anonymous Window.
    3. Paste the following Apex script:
      //Get the automated user Id
      User automUser = [
          SELECT Id FROM User
          WHERE Alias = 'autoproc'
          LIMIT 1
      ]; 
      //Get you existing custom permissionset or 
      //clone a new permissionset from Zuora_Quotes_End_User example ZQuotes_Custom_User(make sure vf pages access should be removed from the permissionset) 
      PermissionSet ps = [
          SELECT Id FROM PermissionSet
          WHERE Name = 'ZQuotes_Custom_User'
          LIMIT 1
      ];  
      // skip if already assigned
      List<PermissionSetAssignment> existing = [
          SELECT Id FROM PermissionSetAssignment
          WHERE AssigneeId = :automUser.Id
          AND PermissionSetId = :ps.Id
      ];
      if (existing.isEmpty()) {
          insert new PermissionSetAssignment(
              AssigneeId = automUser.Id,
              PermissionSetId = ps.Id
          );
          System.debug(LoggingLevel.DEBUG, 'Assigned custonm permission to Automated Process');
      } else {
          System.debug(LoggingLevel.DEBUG, 'Already assigned');
      }
    4. Select Open Log after the script completes.
    5. Verify one of the following messages in the debug log:
      • Assigned the custom permission set to the Automated Process user.

      • The custom permission set is already assigned to the Automated Process user.

      The ZQuotes_Custom_User permission set is assigned to the Automated Process user. Running the script again does not create a duplicate assignment.