Contract renewal webhook not firing from contract management module

We configured a webhook in Infor OS Event Hub to trigger notifications when contracts are approaching renewal dates in the Contract Management module. The webhook is supposed to fire 90 days before the renewal date, but it’s not triggering at all. We’ve verified the endpoint is reachable and working - we can successfully call it manually with test payloads.

Our webhook configuration points to our notification service, and we’ve set up the event subscription for contract renewal events. However, when we check the Event Hub logs, there’s no record of the webhook being invoked even though several contracts have passed their 90-day renewal threshold. We need this for compliance tracking since missed renewals can result in auto-renewals at unfavorable terms.

Is there a scheduled job that needs to be enabled to trigger these events? Should we be using custom event triggers instead of relying on the built-in contract renewal events? Any guidance on troubleshooting webhook event configuration would be helpful.

Your webhook issue stems from how contract renewal events are generated and triggered in ICS 2022. Let me address each aspect:

Webhook Event Configuration: Your Event Hub subscription setup is likely incomplete. Here’s the correct configuration:

  1. Event Type: Must be exactly ‘Contract.RenewalNotification’ (case-sensitive)
  2. Event Source: Set to ‘ContractManagement’ module
  3. Filter Criteria: If you added filters, ensure they don’t exclude your contracts. Common mistake is filtering by contract type and missing the types you actually use.
  4. Webhook Endpoint: Verify it accepts POST requests with JSON payload and returns 200 status within 30 seconds (timeout)

Test your subscription by navigating to Event Hub > Subscriptions > [Your Subscription] > Test. This sends a sample event to verify connectivity.

Scheduled Job Integration: The Contract_Renewal_Check job is essential, but there’s more to configure:

  1. Enable the job in System Administration > Scheduled Jobs > Contract_Renewal_Check

  2. Verify the job parameters:

    • Notification_Threshold: Should be 90 (days before renewal)
    • Include_Auto_Renew: Set to true if you want alerts for auto-renewing contracts
    • Contract_Status_Filter: Should include ‘Active’ at minimum
  3. The job generates events but doesn’t directly trigger webhooks. It creates records in the CONTRACT_RENEWAL_EVENTS table, which Event Hub monitors. Check if this table has any records:

    SELECT * FROM CONTRACT_RENEWAL_EVENTS
    WHERE event_date >= CURRENT_DATE - 7
    
    

   If empty, the job isn't finding matching contracts.

4. Common gotcha: The job uses the CONTRACT_RENEWAL_DATE field, not CONTRACT_END_DATE. Verify your contracts have the renewal date field populated. Many implementations only populate end dates, which the job ignores.

**Custom Event Triggers**: If the scheduled job approach isn't working, implement a custom event trigger:

1. Create a workflow in Contract Management that triggers on contract status changes or date updates
2. Add a workflow action that checks if renewal date minus today equals your threshold (90 days)
3. If true, call the Event Hub API directly to publish a custom event:

POST /ion-api/events/publish { “eventType”: “Custom.ContractRenewalAlert”, “eventData”: { “contractId”: “CTR-12345”, “renewalDate”: “2025-11-10”, “daysUntilRenewal”: 90 } }


4. Subscribe your webhook to this custom event type in Event Hub

This approach gives you more control and real-time triggering instead of waiting for the daily scheduled job.

**Troubleshooting Steps**:

1. Verify contract data:
- Query contracts with renewal dates in the next 90-120 days
- Confirm they have status='Active' and renewal_date field populated
- Check if notification_sent flag is already set to true (prevents duplicate alerts)

2. Test the scheduled job manually:
- In System Administration, select Contract_Renewal_Check and click 'Run Now'
- Monitor the execution log for detailed output
- Check if CONTRACT_RENEWAL_EVENTS table receives new records

3. Verify Event Hub integration:
- Navigate to Event Hub > Monitor > Event Stream
- Filter by event type 'Contract.RenewalNotification'
- If events appear here but webhook isn't firing, the issue is subscription configuration
- If no events appear, the issue is with job execution or event generation

4. Enable debug logging:
- System Administration > Logging Configuration
- Set ContractManagement module to DEBUG level
- Set EventHub module to DEBUG level
- Run the scheduled job again and review logs for errors

In our implementation, we discovered the scheduled job was working but using a different threshold field (notification_days) that was set to 30 instead of 90. Once we corrected that configuration parameter, events started firing properly. We also switched to custom event triggers for critical contracts that need immediate notification, while using the scheduled job for routine renewals. This hybrid approach reduced missed renewals from 15% to zero over the past year.

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

First thing to check - is the contract renewal date field actually populated in your contracts? The webhook only fires if the renewal date field has a value and the contract status is active. Also verify that the Event Hub subscription is active (not paused) and that your endpoint URL is registered correctly in the webhook configuration.

Contract renewal events in ICS 2022 are not real-time events - they’re generated by a scheduled job called Contract_Renewal_Check that runs daily at 2am server time. If that job isn’t enabled or is failing, your webhooks will never fire. Check the scheduled jobs in System Administration and verify its status. Look at the job execution history to see if it’s running and if there are any errors.

Good point about the scheduled job. I found the Contract_Renewal_Check job and it shows as enabled with a last run time of yesterday at 2am. The execution log shows ‘Completed Successfully’ with 0 events generated. Does that mean no contracts met the criteria, or is there a configuration issue with the event generation itself?

Confirmed this resolves the issue — correcting the Event Hub subscription to use exactly ‘Contract.RenewalNotification’ as the Event Type in ContractManagement module triggered our webhooks immediately.

If the job is generating 0 events, the issue is likely with the renewal date calculation logic. The job looks for contracts where renewal_date minus current_date equals the notification threshold (90 days in your case). Check if your notification threshold is configured in the Contract Management settings under Notifications > Renewal Alerts. It might be set to a different value or disabled entirely. Also, the contract status must be ‘Active’ - if contracts are in ‘Pending’ or ‘Draft’ status, they’re excluded from the check.

I’ve seen cases where the webhook subscription event filter was configured incorrectly. In Event Hub, when you create a subscription for contract events, you need to specify the exact event type: ‘ContractRenewalNotification’. If you subscribed to generic ‘ContractUpdate’ events, you won’t receive renewal-specific events. Also check the event filter criteria - if you added filters like contract value or contract type, make sure they match your actual contracts.