How the "CMDB Task Due Date Notifications" flow works. Summary<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } The CMDB Task Due Date Notifications flow is designed to send reminder notifications based on the task lifecycle timeline, calculated from:Task Created Date/Time → Task Due Date The notifications are not sent at fixed clock times. They are sent based on percentage milestones of the time available before the due date. For example, if a task is created at 10:00 AM and due at 2:00 PM, the total available duration is 4 hours. The flow then calculates these checkpoints: 50% = 12:00 PM 75% = 1:00 PM 90% = 1:36 PM 100% = 2:00 PM At each checkpoint, the flow checks whether the task is still open. If the task is still open, it sends a notification. When the notification is supposed to be sent: The flow follows this pattern: 50% of due-date duration reached → send "Due Date Approaching" notification 75% of due-date duration reached → send "Due Date Approaching" notification 90% of due-date duration reached → send "Due Date Approaching" notification 100% of due-date duration reached → send "Due Date Breached" notification So the notification timing depends on the task’s sys_created_on and due_date values. Example: Task created: 10:00 AM Due date: 2:00 PM Total duration: 4 hours The flow sends notifications as follows: MilestoneRuntime pointNotification50%12:00 PMCMDB Task Due Date Approaching75%1:00 PMCMDB Task Due Date Approaching90%1:36 PMCMDB Task Due Date Approaching100%2:00 PMCMDB Task Due Date Breached What conditions are required for the flow to start The flow starts only when a CMDB Data Management Task record is created and all these conditions are true: Active = trueDue date is not emptyAssigned to is not empty So if any of these are missing, the flow will not trigger. For example, the flow will not start if: The task is inactive The due date is blank The assigned_to field is blank Policy type condition : From the flow variable, the eligible policy types are: return gs.getProperty('sn_cmdb_ws.cmdb.dm.policy_types.due_date_notification', 'Certification,Attestation'); attestationcertification So the flow is intended to continue only for eligible CMDB policy types. If the policy type does not match the eligible policy types, the flow ends and no notification is sent. What happens at runtime : At runtime, the flow calculates how much time is remaining before the next percentage milestone. The script calculates: Total duration = Due date - Created date Used duration = Current time - Created date Target milestone duration = Total duration × percentage Remaining wait time = Target milestone duration - Used duration For example: Task created: 10:00 AM Due date: 2:00 PM Total duration: 4 hours 50% milestone = 2 hours after creation = 12:00 PM If the flow is running at 10:20 AM: Used duration = 20 minutes Remaining wait time = 1 hour 40 minutes The flow then waits for that calculated duration. In your test execution, the 50% checkpoint calculated: Remaining Duration = 1 Hour 39 Minutes That is why the flow stayed in the Waiting state. Why the flow uses “Wait for Condition” Each milestone has a Wait for Condition step. The wait step does two things: 1. Waits until the calculated milestone duration expires2. Also monitors whether the task state changes to one of the configured states The condition shown in your flow is: State is one of 3, 4, 7, 8 So the wait step can complete in two ways: The wait duration expiresORThe task state changes to 3, 4, 7, or 8 After the wait completes, the flow checks whether the task is closed. Why it checks “If Task is Closed” Before sending each notification, the flow checks whether the task has already been closed. The logic is: If task is closed → End flowIf task is still open → Send notification This is done to avoid sending unnecessary reminders for tasks that are already completed or closed. Why some notifications may not be sent If the customer reports that notifications are not working, these are the key checkpoints to validate: 1. Was the CMDB Data Management Task created after the flow was activated?2. Is Active = true?3. Is Due date populated?4. Is Assigned to populated?5. Is the task policy type eligible, for example attestation or certification?6. Is the task already in one of the closed/completed/cancelled states?7. Did the task reach the 50%, 75%, 90%, or 100% time milestone?8. Is the flow execution still waiting at a Wait for Condition step?9. Is the notification record active?10. Is the recipient valid and able to receive notifications? The most important point is that the flow does not send all notifications immediately. It waits until each calculated percentage point is reached. Release<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } NA