Why do approval workflow webhooks fail in codebeamer cb-22

We’re experiencing intermittent HTTP 408 timeout errors with approval workflow webhooks in codebeamer cb-22. Our CI/CD pipeline triggers approval workflows via REST API, but webhook callbacks to our Jenkins server frequently fail with timeout errors. The JWT token authentication seems valid when we test manually, but automated calls stall the entire deployment pipeline.

Here’s the webhook configuration:


POST /webhook/approval-callback
Authorization: Bearer eyJhbGc...
Content-Type: application/json

The approval workflow completes in codebeamer, but our external system never receives the callback notification. This blocks our automated release process. Has anyone resolved similar webhook reliability issues in cb-22?

Based on the collective troubleshooting, here’s the comprehensive solution for cb-22 webhook timeout issues:

1. Optimize Webhook Endpoint Response Time Your Jenkins endpoint must return HTTP 200 within 30 seconds (or your configured timeout). Implement asynchronous processing:

// Pseudocode - Webhook endpoint pattern:
1. Receive POST from codebeamer with approval data
2. Validate JWT token signature and expiration
3. Immediately return HTTP 200 to codebeamer
4. Queue approval event to background processor
5. Background job updates Jenkins pipeline status
// See codebeamer Webhook Integration Guide Section 3.4

2. Configure Extended Timeouts and Retries In codebeamer’s site.properties, increase timeout tolerance:


webhook.timeout.seconds=60
webhook.retry.attempts=3
webhook.retry.delay.seconds=10

3. JWT Token Management Ensure JWT tokens remain valid throughout the approval workflow lifecycle. Generate tokens with expiration set to your maximum approval SLA plus 15-minute buffer. In cb-22, token validation happens at webhook execution time, not workflow start time.

4. Network and Security Configuration

  • Use IP addresses instead of hostnames to avoid DNS delays
  • Whitelist your Jenkins server IP in codebeamer’s webhook security settings
  • For HTTPS endpoints, ensure proper certificate chain validation or configure codebeamer to trust your certificates
  • Check firewall rules allowing outbound connections from codebeamer server to Jenkins on required ports

5. Enable Diagnostic Logging Add detailed webhook logging to identify exact failure points:


log4j.logger.com.intland.codebeamer.webhook=DEBUG
log4j.logger.com.intland.codebeamer.rest.auth=DEBUG

Review logs in /tomcat/logs/codebeamer.log for authentication failures, timeout details, and retry attempts.

6. Implement Webhook Relay Pattern (Advanced) For complex environments, deploy an intermediate webhook relay service that:

  • Receives codebeamer webhooks with immediate acknowledgment
  • Handles token validation and payload transformation
  • Implements robust retry logic for downstream Jenkins communication
  • Provides centralized monitoring and error handling

7. Payload Size Optimization If approval workflows include large custom fields or attachments, optimize webhook payloads by:

  • Sending only essential approval metadata in webhook
  • Using reference IDs instead of embedding full objects
  • Implementing separate API calls to fetch detailed data if needed

The combination of endpoint optimization, proper timeout configuration, and JWT token management should resolve your pipeline stall issues. Start with steps 1-3 for immediate improvement, then implement advanced patterns if needed for high-volume environments.

Consider implementing a dedicated webhook relay service between codebeamer and Jenkins. We built a lightweight Node.js middleware that receives codebeamer webhooks instantly (returns 200 immediately), validates JWT tokens, then queues the approval events for Jenkins processing. This architecture completely eliminated our timeout issues.

The relay pattern also gives you better observability and retry logic. You can implement exponential backoff for Jenkins communication failures without blocking codebeamer’s webhook thread.

We had similar issues and found that our Jenkins webhook receiver was too slow. The problem was our endpoint was doing database writes synchronously before sending the HTTP 200 response. We refactored to immediately return 200, then process the approval asynchronously. Also increased codebeamer’s webhook timeout in site.properties:


webhook.timeout.seconds=60
webhook.retry.attempts=3

This gave our Jenkins endpoint more time to respond and enabled automatic retries.

I’ve seen this exact behavior. The HTTP 408 typically indicates the webhook endpoint isn’t responding within codebeamer’s default timeout window (usually 30 seconds). Check if your Jenkins server has network latency or firewall rules blocking the callback. Also verify that the JWT token hasn’t expired before the webhook fires - cb-22 has strict token expiration handling.

We traced our timeouts to DNS resolution delays. The webhook was configured with a hostname that had slow DNS lookups from the codebeamer server. Switching to IP address resolved it immediately. Also check if you’re using HTTPS with self-signed certificates - cb-22 can be strict about certificate validation for webhook endpoints.

Check your JWT token scope and expiration settings. In cb-22, if the approval workflow takes longer than your token’s validity period, the webhook will fail authentication even though the workflow itself succeeds. We set our JWT expiration to match our longest approval SLA plus buffer time. Also ensure your webhook endpoint is whitelisted in codebeamer’s network security settings.

Another angle - verify your webhook payload size. We discovered that cb-22 has undocumented size limits for webhook POST bodies. If your approval workflow includes large custom fields or attachments, the payload might exceed the limit and cause silent failures. Enable debug logging in codebeamer’s webhook module to see the actual error. Add this to log4j.properties:


log4j.logger.com.intland.codebeamer.webhook=DEBUG