Based on your symptoms and the discussion, here’s the complete solution for your LMS webhook integration with Arena QMS training management:
LMS Webhook Integration Architecture: Your webhook integration has several configuration issues that need correction. First, fix your REST API endpoint configuration. The correct endpoint for training completion in Arena 2022.1 is: https://arena.company.com/api/v1/training/records/{trainingRecordId}/complete. You must include the version path ‘/v1/’ and the specific training record ID as a path parameter. The generic ‘/api/training/complete’ endpoint you’re using doesn’t exist in Arena’s API structure, which is why your updates aren’t processing even when authentication succeeds.
Webhook Payload Format: Configure your LMS to send the training completion event with this JSON payload structure:
{
"employeeId": "EMP12345",
"completionDate": "2025-01-19T14:30:00Z",
"status": "COMPLETED",
"score": 95
}
Arena requires the employeeId to match the employee identifier in your Arena user records, completionDate in ISO 8601 format, status field set to ‘COMPLETED’, and score if your training program tracks scores. Missing any required field will cause silent failures where the API accepts the request but doesn’t update the record.
REST API Endpoint Configuration Details: The endpoint requires proper HTTP headers beyond just authentication. Configure your LMS webhook to send: Authorization header with Bearer token, Content-Type header set to ‘application/json’, Accept header set to ‘application/json’, and optionally X-Request-ID header for tracking. The training record ID in the URL path must be the Arena training record ID, not your LMS course ID. You’ll need to maintain a mapping table between LMS course enrollments and Arena training record IDs. When a user enrolls in a course in your LMS, create the corresponding training record in Arena via API and store the Arena record ID for use in completion webhooks.
Authentication and Token Permissions: Your intermittent 401 errors indicate authentication problems. Arena’s Bearer tokens for API access have specific permission scopes and expiration times. Request a dedicated API service account token from Arena with these permissions: ‘training.records.write’, ‘training.status.update’, and ‘user.read’ (to validate employee IDs). Service account tokens typically have longer expiration times than user tokens. Configure your LMS to refresh the Bearer token before each webhook call rather than caching it. Implement token refresh logic: request a new token from Arena’s ‘/api/v1/auth/token’ endpoint using your service account credentials, cache the token with its expiration time, and refresh proactively when the token is within 5 minutes of expiration.
Status Synchronization Logic: Arena’s training record status follows a specific lifecycle. Verify that your training records are in a state that allows completion updates. The record must be in ‘IN_PROGRESS’ or ‘ASSIGNED’ status to accept a completion update. Records in ‘COMPLETED’, ‘EXPIRED’, or ‘CANCELLED’ status will reject completion updates. Also check your training workflow configuration in Arena - navigate to Training Management configuration and verify that ‘Allow external status updates’ is enabled and that the workflow state machine allows transitions from IN_PROGRESS to COMPLETED without required manual approval steps. If manual approval is required, your API update should set the status to ‘PENDING_APPROVAL’ instead of ‘COMPLETED’.
Training Completion Event Handling: Implement proper error handling and retry logic in your LMS webhook configuration. When Arena returns an error response, your LMS should: Log the complete error response including status code and error message, retry the webhook with exponential backoff (retry after 1 minute, then 5 minutes, then 15 minutes), notify training administrators after 3 failed retry attempts, and queue failed updates for manual review. Also implement a reconciliation process that runs daily to compare LMS completion records with Arena training records and identify any mismatches that need correction.
Testing and Validation: Test your corrected integration with these scenarios: successful completion with score, successful completion without score, completion for non-existent employee ID (should return 404), completion for already-completed training (should return 409 conflict), and completion with expired authentication token. Monitor Arena’s API logs to verify that completion events are being received and processed correctly. Set up alerts for any API errors or failed status updates so you can address integration issues quickly.