Project expense approval workflow fails during batch import via EIB with account validation errors

We’re experiencing workflow failures when importing project expenses via EIB in batches. The approval workflow works fine for manually entered expenses, but batch imports via EIB result in approval workflow errors with “Invalid account code” messages.

The issue appears to be related to account code validation and how the workflow handles errors during batch processing. When a single expense in a 100-line batch has an invalid account code, the entire batch workflow fails rather than processing valid lines and flagging exceptions.

<wd:Expense_Line>
  <wd:Account_Code>7500-INVALID</wd:Account_Code>
  <wd:Validation_Status>FAILED</wd:Validation_Status>
  <wd:Workflow_Status>BLOCKED</wd:Workflow_Status>
</wd:Expense_Line>

This is causing significant delays in expense approvals for our project managers. We need the workflow to handle EIB validation errors more gracefully. How have others configured workflows to process batch imports with validation exceptions?

Let me provide a comprehensive solution addressing all three areas:

EIB Data Mapping: Enhance your EIB template to include validation before import:

  1. Open your Project Expense EIB template
  2. Add a validation column that references your chart of accounts
  3. Use a formula to check account code validity:
    • Map Account_Code to a lookup field that validates against active accounts
    • Add a conditional column: IF(ISVALID(Account_Code), “VALID”, “INVALID”)
  4. Configure the EIB template with “Continue on Error” option:
    • In template settings, set Error Handling = “Continue Processing”
    • Enable “Create Error Report” to log validation failures
  5. Modify your mapping to include fallback logic:
<wd:Account_Code>
  <wd:ID wd:type="Account_Code">?Account_Code?</wd:ID>
  <wd:Validation_Rule>ACTIVE_PROJECT_ACCOUNTS</wd:Validation_Rule>
</wd:Account_Code>

This ensures only valid, active project account codes are imported. Invalid codes are logged in the error report but don’t block the entire batch.

Account Code Validation: Implement multi-level validation:

  1. Create a validation rule in Workday for project account codes:
    • Navigate to Configure Business Object > Expense Line
    • Add validation rule: “Account must be active and project-eligible”
    • Set validation timing: “Before workflow initiation”
  2. Update your chart of accounts to include project eligibility flags
  3. Modify the expense line business object to check:
    • Account exists in chart of accounts
    • Account status = Active
    • Account type allows project expenses
    • Account is not restricted for the specific project
  4. Add a pre-workflow validation step that executes these checks before triggering approval

Workflow Error Handling: Reconfigure your approval workflow for batch resilience:

  1. Go to Configure Business Process > Project Expense Approval
  2. Add a new first step: “Validate Expense Data”
    • This step runs validation rules before approval routing
    • Configure it to evaluate each expense line independently
  3. Add conditional branching:
    • IF validation passes → Route to appropriate approver
    • IF validation fails → Route to Exception Work Queue
  4. Create an exception queue for invalid expenses:
    • Name: “Project Expense Validation Exceptions”
    • Assignees: Project accounting team
    • Include validation error details in work item
  5. Modify workflow to process line-by-line:
    • Change trigger from “Batch Import Complete” to “Expense Line Created”
    • This ensures each line flows through workflow independently
    • Valid lines proceed to approval while invalid lines go to exceptions

Implementation Steps:

  1. Update EIB template with validation mapping (implement first)
  2. Test import with mixed valid/invalid data to confirm error handling
  3. Modify workflow to add validation step and exception routing
  4. Create and configure exception work queue
  5. Train project accounting team on exception processing
  6. Run parallel testing: import same batch file before and after changes

The key is separating validation from workflow execution. Validate early (in EIB), validate thoroughly (before workflow), and handle failures gracefully (exception routing). This approach allows valid expenses to flow through approval while flagging problematic ones for correction without blocking the entire batch.


This draft is based on general Workday knowledge. It has not been verified against your specific version and environment. Practitioners: verify the steps and share your experience below.

The problem is that your EIB mapping isn’t validating account codes before triggering the workflow. Add a validation step in your EIB template that checks account code validity against your chart of accounts. You can use a VLOOKUP or reference field validation to ensure only valid codes are imported. This prevents invalid data from reaching the workflow in the first place.

Your workflow needs error handling logic for batch scenarios. Configure the workflow to process expenses individually rather than as a single batch transaction. This way, if one expense line fails validation, the others can still proceed through approval. Add a conditional step that routes invalid expenses to an exception queue while allowing valid ones to continue. We implemented this by adding a validation step before the approval routing step, with separate paths for valid and invalid expenses.

Thanks for the suggestions. I can add validation to the EIB template, but I’m concerned that will just reject the entire file if any line has an error. Ideally, we want to import what’s valid and flag what’s not. The workflow error handling approach sounds better, but I’m not sure how to configure the workflow to process line-by-line instead of batch-level.

Tested this on Workday 2023R2 and adding the ISVALID account code validation column in the EIB template with ‘Continue Processing’ error handling eliminated our batch import failures.

You need to modify your EIB process to use “Continue on Error” mode. This allows the import to process valid lines while logging errors for invalid ones. Then your workflow can be triggered per expense line rather than per batch. Check the EIB template configuration for error handling options - there should be a setting that controls whether the import stops on first error or continues processing.

Have you considered pre-validating your expense data before importing to EIB? We built a staging process that validates account codes against a reference table before the EIB load. This catches errors earlier and gives users a chance to correct data before it enters Workday. It’s an extra step, but it prevents workflow failures and reduces exception handling downstream.

The account validation is probably failing because your chart of accounts has restrictions that aren’t being checked during import. Some account codes might be valid in structure but inactive or restricted for project use. Your workflow should validate not just the format but also the account status and eligibility for project expenses.