FAQ and Troubleshooting¶
This document provides answers to frequently asked questions and solutions to common issues encountered when using Decision Control. Topics are organized by functional area for quick reference.
Frequently Asked Questions¶
General Questions¶
What is Decision Control?¶
Decision Control is an enterprise-grade decision intelligence platform that enables organizations to author, test, deploy, and govern Decision Model and Notation (DMN) models across multiple environments. It provides visual DMN authoring, intelligent testing via natural language prompts, multi-environment management, role-based governance workflows, and comprehensive audit trails. Built on Apache KIE technology with enterprise enhancements, Decision Control manages business logic as versioned, auditable, and governable assets.
What are the different editions of Decision Control?¶
Decision Control is available in four tiers:
- Pioneer: Core DMN authoring and execution for development teams
- Innovator: Adds Prompt UI for natural language testing and business analyst collaboration
- Horizon: Adds Management UI and governance features for multi-environment deployments
- Keystone: Complete feature set with advanced analytics for enterprise-wide decision intelligence
Each edition builds on the previous, with pricing and features aligned to organizational maturity.
How does Decision Control differ from other DMN engines?¶
Unlike standalone DMN execution engines, Decision Control provides end-to-end lifecycle management including:
- Integrated authoring, testing, and management interfaces
- Built-in governance workflows with four-eyes principle enforcement
- Multi-environment deployment coordination (dev, test, prod)
- Natural language testing via Prompt UI
- Complete audit trails for regulatory compliance
- OAuth2/OIDC authentication with role-based access control
Decision Control is a complete platform, not just an execution engine.
Can Decision Control integrate with my existing systems?¶
Yes. Decision Control provides RESTful APIs with OpenAPI documentation for seamless integration. Common integration patterns include:
- API Integration: REST endpoints for decision execution and model management
- Event-Driven: Kafka connectors for asynchronous decision requests
- CI/CD: Git-based model storage with automated testing pipelines
- SSO: OAuth2/OIDC integration with enterprise identity providers
See Integration and APIs for detailed integration guidance.
Is Decision Control cloud-native?¶
Yes. Decision Control is designed for Kubernetes deployment with:
- Containerized microservices architecture
- Horizontal scaling for high availability
- Health checks and readiness probes
- Prometheus metrics for observability
- ConfigMap/Secret integration for configuration
- Ingress-based routing with TLS termination
All components run as stateless services with state in managed PostgreSQL databases.
Authentication and Security¶
How does authentication work?¶
Decision Control uses Keycloak for OAuth2/OIDC authentication. The authentication flow:
- User accesses Decision Control landing page
- System redirects to Keycloak login
- User provides credentials
- Keycloak issues access token, refresh token, and ID token
- User's browser stores tokens in localStorage
- All API calls include
Authorization: Bearer {token}header - Tokens automatically refresh before expiration
See Integration and APIs - Authentication for implementation details.
What roles are available?¶
Decision Control defines five standard roles:
| Role | Keycloak Role Name | Permissions |
|---|---|---|
| Business Analyst | decision-control-dev-users |
Create models, submit for review, access dev/test |
| Risk Manager | decision-control-risk-manager |
Approve risk reviews, access all environments |
| Compliance Officer | decision-control-compliance |
Approve compliance reviews, access all environments |
| Operations Manager | decision-control-prod-users |
Submit production deployments, access all environments |
| Administrator | decision-control-admin |
All permissions, emergency workflows, system config |
Roles are assigned in Keycloak and mapped to permissions in Decision Control.
How do I add custom roles?¶
To create custom approval roles:
- Create role in Keycloak: Navigate to Realm
aletyx→ Roles → Create Role - Assign to users: Add role to appropriate user accounts
- Update workflows: Add workflow steps requiring the new role (see Governance Workflow)
- Deploy changes: Update governance-api ConfigMap and restart pods
What is the four-eyes principle?¶
The four-eyes principle prevents a user from approving their own submission. Decision Control enforces this by:
- Comparing submitter email with approver email
- Rejecting approval attempts with
403 Forbiddenand error codeCANNOT_APPROVE_OWN_REQUEST - Logging all attempts in audit trail
- Requiring different users at each approval stage
This ensures separation of duties and prevents single-person approval chains.
How long do access tokens last?¶
By default:
- Access tokens: 5 minutes
- Refresh tokens: 30 days
- ID tokens: 5 minutes
Tokens automatically refresh using the refresh token before expiration. If the refresh token expires, users must log in again.
Model Management¶
What DMN versions are supported?¶
Decision Control supports DMN 1.5 specification (which includes backward compatibility with DMN 1.1-1.4). Models created in any supported version can be executed. The Authoring UI generates DMN 1.5 by default.
Can I import existing DMN models?¶
Yes. Upload existing DMN files (.dmn extension) via:
- Authoring UI: Click "Upload Model" and select file
- API: POST to
/api/management/units/{unitId}/versions/{versionId}/modelswith multipart/form-data
The system validates DMN syntax and rejects invalid models with detailed error messages.
How do I version my models?¶
Decision Control automatically manages versioning for you. When you publish a model, the system automatically increments the version number within the Unit/Version/Models hierarchy. You don't need to manually specify version numbers.
Published versions are immutable. To make changes, simply create and publish a new version, and the system will automatically assign the next version number.
Can I delete a published version?¶
No. Published versions are immutable to maintain audit trail integrity. If a version should not be used:
- Disable the version: Set status to
DISABLED(prevents execution but retains for audit) - Document reason: Add note in version changelog
- Communicate: Notify users and update documentation
To remove all traces (not recommended), administrators can delete via database, but this breaks audit trails.
What happens if my DMN model has errors?¶
The system validates DMN models at upload and execution:
Upload Validation:
- XML syntax errors →
400 Bad Requestwith error details - Missing required elements → Validation error message
- Invalid FEEL expressions → Syntax error with line number
Execution Validation:
- Missing inputs → Error message listing missing input names
- Type mismatches → Type conversion error
- Logic errors → Decision evaluation failure with context
Always test models before publishing to catch validation errors.
Decision Execution¶
How do I execute a decision?¶
Execute decisions via REST API:
curl -X POST https://decision-control-prod.../api/runtime/units/{unit}/versions/{version}/execute \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"modelName": "MyModel",
"decisionName": "MyDecision",
"context": {
"Input1": "value1",
"Input2": 123
}
}'
See Integration and APIs - Decision Execution for complete reference.
Governance and Workflows¶
Horizon/Keystone Edition
Governance features are available in Horizon and Keystone editions only.
What workflows are available?¶
Decision Control includes six pre-configured workflows:
- Standard Dev → Test: Business review → Risk review → Deploy
- Fast-Track Dev → Test: Admin quick review → Deploy
- Standard Test → Prod: Business → Risk → Compliance → Admin → Deploy
- Emergency Test → Prod: Admin approval → Deploy → Post-review
- Multi-Approver Test → Prod: Multiple approvers at each stage
- Self-Service Dev → Test: Automated validation → Deploy
See Governance Workflow for complete descriptions.
Can I create custom workflows?¶
Yes. Edit the workflow configuration file and deploy changes:
- Edit workflow JSON: Define steps, roles, and conditions
- Update ConfigMap:
kubectl create configmap governance-workflows --from-file=promotion-workflows.json - Restart governance-api:
kubectl rollout restart deployment/governance-api
See Governance Workflow - Creating Custom Workflows for detailed instructions.
How do I submit a model for review?¶
From Aletyx Decision Control Tower landing page:
- Navigate to Models view
- Select source environment (dev or test)
- Expand unit and version to find model
- Click "Submit for Review"
- Choose workflow type and target environment
- Provide justification
- Submit
See Usage Scenarios - Scenario 3 for step-by-step tutorial.
Why can't I approve my own request?¶
Decision Control enforces the four-eyes principle: you cannot approve requests you submitted. This prevents single-person approval chains and ensures separation of duties. Have another user with the required role approve the request.
How do I track approval status?¶
Check approval status via:
- Aletyx Decision Control Tower Tasks View: Shows all requests and current status
- Request Detail Page: Complete timeline with all events
- API:
GET /api/governance/requests/{requestId} - Email Notifications: Automatic notifications on status changes (if configured)
Can I cancel a governance request?¶
Yes. Request submitters and administrators can cancel pending requests:
- Navigate to Tasks view
- Click on request
- Click "Cancel Request"
- Provide cancellation reason
Canceled requests appear in audit trail with status CANCELLED.
Audit and Compliance¶
How do I access audit trails?¶
Access audit data via:
- Aletyx Decision Control Tower UI: Audit view with filtering and export
- API:
GET /api/governance/audit?requestId={id} - Database: Direct PostgreSQL query (administrators only)
See Usage Scenarios - Scenario 4 for detailed tutorial.
Can audit records be deleted?¶
No. Audit records are immutable to ensure compliance with regulatory requirements. The database enforces this with triggers that prevent DELETE operations on audit tables.
Exports include all metadata required for regulatory audits.
Prompt UI and Testing¶
What is Prompt UI?¶
Prompt UI allows testing DMN models using natural language queries instead of technical API calls. Business users can test models by describing scenarios conversationally, making testing accessible to non-technical stakeholders.
Available in Innovator edition and higher.
How accurate is natural language parsing?¶
Prompt UI uses language models to extract input values from natural language queries. Accuracy depends on query clarity:
- High accuracy (>95%): Clear queries with explicit values ("age 35, income $75000")
- Medium accuracy (80-95%): Conversational queries with some ambiguity
- Low accuracy (<80%): Vague queries, missing values, or unclear context
For critical testing, verify extracted inputs before execution.
Troubleshooting¶
Authentication Issues¶
Error: "Token expired" (401 Unauthorized)¶
Symptom: API calls fail with 401 status and message "Token expired".
Cause: Access token has expired (default lifetime: 5 minutes).
Solution:
Implement automatic token refresh:
async function refreshIfNeeded() {
const session = JSON.parse(localStorage.getItem('session'));
const now = Math.floor(Date.now() / 1000);
if (session.expires_at - now < 30) {
// Token expires in less than 30 seconds, refresh
const response = await fetch(
'https://keycloak.../realms/aletyx/protocol/openid-connect/token',
{
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: new URLSearchParams({
grant_type: 'refresh_token',
client_id: 'decision-control-ui',
refresh_token: session.refresh_token
})
}
);
const tokens = await response.json();
// Update session with new tokens
}
}
Error: "Insufficient permissions" (403 Forbidden)¶
Symptom: User can log in but cannot access certain features or approve requests.
Cause: User lacks required Keycloak role or attempting to approve own request.
Solution:
-
Verify user roles: Decode JWT token to check roles:
-
Check role requirements: Verify workflow step requires a role the user has.
-
Contact administrator: Request role assignment if missing required role.
-
Four-eyes violation: If approving own request, have different user approve.
Error: "Redirect URI mismatch"¶
Symptom: After Keycloak login, browser shows error "Invalid redirect URI".
Cause: Keycloak client configuration doesn't include the application's redirect URI.
Solution:
- Log in to Keycloak admin console
- Navigate to Realm
aletyx→ Clients →decision-control-ui - Add redirect URI to Redirect URIs field:
- Development:
http://localhost:8080/* - Production:
https://landing-page.your-domain.com/* - Save changes
Model Execution Issues¶
Error: "Model not found" (404 Not Found)¶
Symptom: Decision execution fails with "Model not found" error.
Cause: Model name, unit name, or version is incorrect, or version is not published.
Solution:
-
Verify model exists:
-
Check version status: Ensure version is
PUBLISHED, notDRAFT. -
Verify exact names: Model names are case-sensitive. Use exact names from API response.
-
Check environment: Ensure querying correct environment (dev, test, prod).
Error: "Type mismatch: expected number, got string"¶
Symptom: Execution fails with type conversion error.
Cause: Input value type doesn't match DMN model definition.
Solution:
-
Check DMN model: Verify data types for all inputs (number, string, boolean, date).
-
Provide correct types in JSON:
- Numbers:
{"age": 35}(no quotes) - Strings:
{"name": "John"}(with quotes) - Booleans:
{"approved": true}(no quotes) -
Dates:
{"dob": "1990-01-15"}(ISO 8601 string) -
Validate JSON: Use JSON validator to ensure correct syntax.
Slow execution performance¶
Symptom: Decision execution takes longer than expected (>500ms).
Cause: Complex models, large decision tables, or insufficient resources.
Solution:
-
Optimize decision tables: Reduce rules, use simpler conditions.
-
Simplify model structure: Break complex decisions into smaller, focused decisions.
-
Increase resources: Scale up CPU/memory limits:
-
Use batch execution: Process multiple inputs together to amortize overhead.
-
Monitor metrics: Check Prometheus metrics for bottlenecks:
Governance Workflow Issues¶
Request stuck in "Pending" status¶
Symptom: Governance request doesn't advance after approval.
Cause: Four-eyes violation, role mismatch, or database transaction failure.
Solution:
-
Check four-eyes principle: Verify approver is different from submitter:
-
Verify user role: Ensure approver has required role for current step.
-
Check governance-api logs:
-
Retry approval: If transient error, retry approval action.
Deployment failed after approval¶
Symptom: All approvals complete but deployment to target environment fails.
Cause: Target environment unavailable, network issues, or authentication failure.
Solution:
-
Check target environment health:
-
Verify network connectivity:
-
Check governance-api logs for deployment errors:
-
Retry deployment: Administrators can manually trigger deployment via API.
Cannot see pending tasks¶
Symptom: User with correct role doesn't see pending tasks in Tasks view.
Cause: Token doesn't include role, role name mismatch, or request already approved.
Solution:
-
Decode JWT to verify roles:
-
Check workflow configuration: Verify step requires a role the user has.
-
Refresh token: Log out and log in again to get updated roles.
-
Check request status: Request may have been approved by another user with same role.
Database and Infrastructure Issues¶
Database connection errors¶
Symptom: Application logs show "Cannot connect to database" errors.
Cause: PostgreSQL service down, incorrect credentials, or network policy blocking access.
Solution:
-
Check PostgreSQL pod status:
-
Verify database service:
-
Test connectivity:
-
Verify credentials: Check Secret contains correct database password:
-
Check network policies: Ensure pods can reach database service.
Ingress not routing requests¶
Symptom: Cannot access Decision Control URLs, getting 404 or 503 errors.
Cause: Ingress misconfigured, DNS not resolving, or TLS certificate issues.
Solution:
-
Check Ingress status:
-
Verify DNS resolution:
-
Test TLS certificate:
-
Check backend service:
-
Review ingress controller logs:
Pod crashes or restarts frequently¶
Symptom: Pods enter CrashLoopBackOff or restart frequently.
Cause: Out of memory, application errors, or failing health checks.
Solution:
-
Check pod logs:
-
Describe pod for events:
-
Check resource usage:
-
Increase resource limits if OOMKilled:
-
Fix health check endpoints if failing readiness/liveness probes.
Performance Issues¶
High API latency¶
Symptom: API requests take longer than expected (>1 second).
Cause: Insufficient resources, database query performance, or network issues.
Solution:
-
Check Prometheus metrics:
-
Review database query performance: Enable slow query logging in PostgreSQL.
-
Increase replicas for horizontal scaling:
-
Add connection pooling: Verify HikariCP configuration.
-
Enable caching: Implement Redis cache for frequently accessed data.
High memory usage¶
Symptom: Pods consuming excessive memory, approaching limits.
Cause: Memory leaks, large compiled models, or insufficient garbage collection.
Solution:
-
Monitor JVM metrics:
-
Trigger garbage collection: Call actuator endpoint (if enabled).
-
Increase heap size:
-
Profile for memory leaks: Use Java profiling tools.
-
Restart pods as temporary mitigation:
Common Error Codes Reference¶
| Error Code | HTTP Status | Description | Common Cause | Solution |
|---|---|---|---|---|
INVALID_TOKEN |
401 | Token expired or invalid | Access token expired | Refresh token |
INSUFFICIENT_PERMISSIONS |
403 | Missing required role | User lacks role | Request role assignment |
CANNOT_APPROVE_OWN_REQUEST |
403 | Four-eyes violation | Submitter trying to approve | Different user approves |
RESOURCE_NOT_FOUND |
404 | Unit/version/model not found | Invalid ID or name | Verify resource exists |
VERSION_ALREADY_PUBLISHED |
409 | Cannot modify published version | Trying to edit published version | Create new version |
DUPLICATE_UNIT_NAME |
409 | Unit name exists | Name collision | Choose unique name |
DMN_VALIDATION_ERROR |
400 | Invalid DMN syntax | Malformed DMN XML | Fix DMN syntax |
MISSING_REQUIRED_INPUT |
400 | Execution missing input | Incomplete context | Include all inputs |
TYPE_MISMATCH |
400 | Wrong input type | Type conversion failure | Fix input types |
DATABASE_CONNECTION_ERROR |
503 | Cannot connect to database | DB service down | Check DB health |
WORKFLOW_NOT_FOUND |
404 | Invalid workflow type | Wrong workflow ID | Use valid workflow |
Getting Additional Help¶
Documentation Resources¶
- Overview: Platform introduction and capabilities
- Architecture: System design and component interactions
- Setup and Configuration: Deployment and configuration
- Governance Workflow: Approval workflows and customization
- Integration and APIs: API reference and integration patterns
- Usage Scenarios: Step-by-step tutorials
Support Channels¶
Enterprise Support:
- Email: support@aletyx.com
- SLA: based on your Aletyx Licensed Tier
Professional Services:
- Implementation consulting
- Custom workflow development
- Performance tuning and optimization
- Training and enablement
Diagnostic Information to Provide¶
When requesting support, include:
- Version information: Decision Control version and edition
- Environment: Kubernetes version, namespace, resource allocation
- Error details: Complete error message and stack trace
- Steps to reproduce: Detailed reproduction steps
- Logs: Relevant pod logs (anonymize sensitive data)
- Configuration: Relevant ConfigMaps and Secrets (redact passwords)
- Network diagram: Architecture and network policies (if relevant)
Useful Diagnostic Commands¶
Collect diagnostic information:
# Get pod status and events
kubectl get pods -n prod
kubectl describe pod decision-control-dev-xxxx -n prod
# Collect logs
kubectl logs deployment/decision-control-dev -n dev --tail=500 > decision-control.log
kubectl logs deployment/governance-api -n prod --tail=500 > governance-api.log
# Export resource configurations
kubectl get deployment decision-control-dev -n dev -o yaml > deployment.yaml
kubectl get configmap -n prod -o yaml > configmaps.yaml
# Check resource usage
kubectl top pods -n prod
kubectl top nodes
# Verify networking
kubectl exec -it deployment/decision-control-dev -n dev -- nslookup postgres-dev
kubectl exec -it deployment/governance-api -n prod -- curl -I https://decision-control-test...
Next Steps¶
- Overview: Understand Decision Control capabilities
- Setup and Configuration: Deploy Decision Control
- Usage Scenarios: Learn through step-by-step tutorials