Troubleshooting Guide for 3C Logic AWA issue caused due to AMBSummary<!-- /*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: ; } } This knowledge article provides a comprehensive troubleshooting framework for identifying agent presence synchronization issues between ServiceNow Advanced Work Assignment (AWA) and the 3CLogic OpenFrame CTI panel. The core problem typically manifests as a failure or significant delay (30–40+ seconds) in updating an agent's status, or updates dropping entirely during initial login or on a first time page load. Facts<!-- /*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: ; } } 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: ; } } Any Instructions<!-- /*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: ; } } /* NS Branding Styles */ .ns-kb-css-body-editor-container p, .ns-kb-css-body-editor-container span, .ns-kb-css-body-editor-container ul, .ns-kb-css-body-editor-container li, .ns-kb-css-body-editor-container ol, .ns-kb-css-body-editor-container td, .ns-kb-css-body-editor-container th { font-size: 12pt; font-family: Lato, Arial, sans-serif; color: var(--now-color--text-primary, #000000); } .ns-kb-css-body-editor-container h1 { font-size: 28pt; font-family: Lato, Arial, sans-serif; color: var(--now-color--text-primary, #000000); margin-bottom: 12px; } .ns-kb-css-body-editor-container h2 { font-size: 24pt; font-family: Lato, Arial, sans-serif; color: var(--now-color--text-primary, #000000); margin: 0; } .ns-kb-css-body-editor-container h3 { font-size: 18pt; font-family: Lato, Arial, sans-serif; color: var(--now-color--text-primary, #000000); } .ns-kb-css-body-editor-container h4 { font-size: 14pt; font-family: Lato, Arial, sans-serif; color: var(--now-color--text-primary, #000000); } .ns-kb-css-body-editor-container a { font-size: 12pt; font-family: Lato, Arial, sans-serif; color: var(--now-color--link-primary, #00718F); text-decoration: none; } .ns-kb-css-body-editor-container a:hover { color: var(--now-color--link-primary, #024F69); text-decoration: underline; } .ns-kb-css-body-editor-container a:target { color: var(--now-color--link-primary, #032D42); } .ns-kb-css-body-editor-container a:visited { color: var(--now-color--link-primary, #00718F); } .ns-kb-css-body-editor-container img { max-width: 100%; height: auto; } .ns-kb-css-body-editor-container pre, .ns-kb-css-body-editor-container code { font-family: Consolas, "Courier New", monospace; } .ns-kb-css-body-editor-container pre { background: #f7f7f7; border: 1px solid #d9d9d9; border-radius: 4px; padding: 12px; overflow-x: auto; white-space: pre-wrap; word-wrap: break-word; } .ns-kb-css-body-editor-container table { border-collapse: collapse; width: 100%; } .ns-kb-css-body-editor-container th, .ns-kb-css-body-editor-container td { border: 1px solid #d9d9d9; padding: 8px; vertical-align: top; } .ns-kb-css-body-editor-container th { background-color: #f5f5f5; text-align: left; } /* Details Accordion */ .ns-kb-accordion { margin-top: 20px; } .ns-kb-accordion details { border: 1px solid #d9d9d9; border-radius: 6px; margin: 0 0 14px 0; overflow: hidden; background: #ffffff; box-shadow: 0 1px 2px rgba(0,0,0,0.03); } .ns-kb-accordion summary { list-style: none; cursor: pointer; padding: 18px 20px; background: #f8f9fb; display: flex; align-items: center; gap: 14px; font-size: 24pt; font-family: Lato, Arial, sans-serif; color: var(--now-color--text-primary, #000000); line-height: 1.2; transition: background-color 0.2s ease, box-shadow 0.2s ease; } .ns-kb-accordion summary:hover { background: #eef3f7; } .ns-kb-accordion summary:focus { outline: 2px solid #00718F; outline-offset: -2px; } .ns-kb-accordion details[open] summary { background: #eef6f8; } .ns-kb-accordion summary::-webkit-details-marker { display: none; } .ns-kb-accordion summary::before { content: "▸"; font-size: 14pt; font-weight: bold; color: #00718F; width: 22px; min-width: 22px; text-align: center; display: inline-flex; align-items: center; justify-content: center; transition: transform 0.2s ease; } .ns-kb-accordion details[open] summary::before { transform: rotate(90deg); } .ns-kb-accordion-content { padding: 18px 20px 22px 20px; border-top: 1px solid #e5e5e5; background: #ffffff; } 1. Purpose of This Article This article provides a step-by-step approach to identify, triage, and troubleshoot agent presence synchronisation issues between ServiceNow Advanced Work Assignment (AWA) and 3CLogic OpenFrame CTI. It focuses on issues where an agent updates their presence status in ServiceNow, but the updated state does not synchronise correctly to the OpenFrame CTI panel, or the update is significantly delayed. INFO: The most common causes are initial load timing conditions, AMB saturation, Record Watcher behaviour, and client-side rendering gaps. 2. Scope of the Issue Use this guide when one or more of the following symptoms are observed: Agent presence status does not synchronise between ServiceNow and 3CLogic OpenFramePresence updates are delayed, sometimes by more than 30–40 secondsPresence state fails to update during the initial page load or loginSync behaviour is intermittent during the sessionWork item or presence-related updates appear to be missing in the workspace UI This guide is most relevant when the issue may involve one or more of the following layers: OpenFrame client / CTI iframeAWA event generationAMB message deliveryCustom widgets or Record WatchersSystem configuration or environmental network factors 3. Summary of Known Issue Patterns A. Presence Sync Failure or High Latency Agents change their presence status in the Service Operations Workspace (SOW) inbox, but the new state either does not reach the OpenFrame CTI panel, or arrives with significant UI delay. B. Initial Login Drop (Race Condition) On the first page load, the initial presence event can be lost because the OpenFrame iframe has not completed initialisation. contentWindowInit = falsethe event fires before the handshake is completethe first presence update is droppedlater updates behave normally WARNING: If the issue occurs only on first login or initial page load, investigate the known race condition path before starting deeper AMB analysis. C. AMB Flooding and Semaphore Exhaustion A high number of AMB subscriptions or messages — often caused by unoptimised custom widgets or Record Watchers — can saturate application node semaphores. AMB queues are delayedlegitimate presence events are starvedupdates may be delayed or missed entirely CRITICAL: AMB flooding is one of the most common reasons for delayed or dropped presence synchronisation events. D. Client-Side Rendering / Notification Gaps In some cases, backend delivery succeeds but the client UI does not reflect the update correctly. missing inbox cardsmissing audio notificationsintermittent behaviour despite successful event delivery 4. Before You Troubleshoot: Pre-Checks NOTE: Complete these pre-checks before moving into deeper triage and troubleshooting. They help determine whether the issue originates in the browser, OpenFrame, AWA, or AMB layers. 4.1 Verify Presence Events in OpenFrame Follow the guidance from OpenFrame - Agent Presence Troubleshooting Guide (KB2830034) and run the following in the browser console: openFrameAPI.subscribe( openFrameAPI.EVENTS.OPENFRAME_AWA_AGENT_PRESENCE, function (event) { console.log(event); } ); This confirms whether the presence event is reaching the browser and helps determine whether the issue is: client-sideor upstream in AWA / AMB 4.2 Validate AWA Record Watcher Behaviour A Record Watcher Responder named awa.work_item is triggered when a work item is assigned to an agent. This responder sends an AMB message to the agent’s workspace page in the browser. If this behaviour is missing or inconsistent, the issue may involve: Record Watcher executionAMB deliverycustom watcher logicmessage flooding from other components INFO: If the awa.work_item responder does not trigger correctly, presence or work item updates may never reach the UI. 4.3 Enable AWA Logging Enable the following property: com.snc.awa.syslog.enabled = true This helps confirm whether AWA is generating and processing events as expected. 4.4 Verify AMB Message Storage Check whether AMB messages are being stored: sys_amb_messages.list If the expected messages are not present, the issue may occur before AMB delivery, such as: event not generatedmessage not publishedwatcher not triggered WARNING: If messages are missing from sys_amb_messages, the issue likely originates before AMB delivery. 4.5 Validate AMB Configuration PropertyExpected Valueglide.amb.websocket.enabledtrueglide.amb.message_buswebsocketglide.amb.client.heartbeat.intervalDefaultglide.amb.client.heartbeat.timeoutDefault Guidance glide.amb.websocket.enabled and glide.amb.message_bus should remain at default valuesheartbeat settings usually do not need to be changedin heavily firewalled or high-latency environments, heartbeat values may require tuning to prevent dropped client connections NOTE: Incorrect AMB property values can cause behaviour that resembles performance, client-side, or event delivery issues. 5. How to Identify the Issue Pattern Before deep troubleshooting, classify the issue into the most likely pattern. Issue PatternTypical BehaviourLikely DirectionLogin-only failureFails only during initial page load or first login; subsequent manual updates workPRB2011118 / iframe initialisation timingIntermittent or ongoing sync failureIssue continues throughout the session or happens unpredictablyAMB saturation, semaphore exhaustion, custom widgets, Record WatchersEvent delivered but UI not updatedLogs show delivery, but the workspace or CTI panel does not reflect the updateClient-side rendering or notification processing issue 6. Triage Workflow Step 1: Confirm Plugin Baseline Ensure the required plugin is installed and active: com.glide.interaction.awa If this plugin is missing, presence change events will not be received by the OpenFrame architecture. Step 2: Determine Timing Behaviour Ask the following: Does the issue happen only during login?Does it continue after the first successful update?Does it affect all agents or only some agents?Is it reproducible consistently? This helps direct the investigation toward: race conditionAMB performancecustomisationclient-side issue Step 3: Review Recent Customisations Identify whether the environment contains: custom Service Portal widgetscustom Workspace componentsCTI panel scriptssnRecordWatcher implementations CRITICAL: Customisations are a common contributor to AMB flooding and should be reviewed early. 7. Step-by-Step Troubleshooting 7.1 Check Real-Time Node Semaphores Navigate to: https://<your-instance>.service-now.com/xmlstats.do Inspect the affected node and review: amb_sendamb_receive If semaphore queues are maxed out or exhausted, AMB congestion is likely contributing to the issue. 7.2 Identify the Message Source If semaphores are saturated: review XML statisticsidentify which transactions or table queries are consuming the slotslook for excessive subscriptions on high-volume transactional tables This is especially important when custom widgets or Record Watchers are present. 7.3 Review AMB Dashboard / Node Scope If possible, confirm: whether the issue is isolated to one nodewhether multiple nodes show the same AMB pressurewhether traffic spikes align to the reported issue time This helps distinguish between: localised node trafficbroader environment-wide AMB saturation 7.4 Optimise Record Watchers If a Record Watcher is found to be flooding the channel, update it to use more restrictive filters. For example, instead of broad table-level subscriptions, use targeted conditions such as: assigned_toservice_providerother narrow record-specific filters This reduces unnecessary AMB traffic and prevents global table broadcast behaviour. 7.5 Review Known Platform Fix If the issue aligns with the initial load race condition, the environment should be reviewed for the fix associated with: PRB2011118SR - CSM - Openframe Bundle - v3.2 (Australia release) or later This addresses the scenario where the first presence event is lost before the iframe handshake completes. 7.6 Consider Additional Mitigations Depending on the environment and findings, the following may be considered after validation: Turn off re-delivery for the AWA processor(test in sub-production first and align with development guidance)Set: com.glide.awa.agent_inactivity_workspace_only = true These changes should be tested carefully before applying to production. WARNING: Additional mitigations should be validated in sub-production before any production rollout. 8. Client-Side Considerations In some cases, the issue is not caused by AMB delivery failure but by how the client handles updates. Related guidance such as KB1644436 highlights possible client-side symptoms including: missing inbox cardsaudio notifications not firingintermittent UI behaviour even when the message was delivered If backend evidence shows that: the AMB message existsthe event was sentAWA logging confirms generation …then capture client-side logging and browser behaviour to determine whether the issue is in rendering rather than delivery. 9. Quick Checklist Our review has identified two primary patterns that can cause this issue: Initial Load Race Condition – the first presence update may be lost if it occurs before the OpenFrame iframe fully initialises.AMB Queue Saturation – high message volume or custom subscription behaviour can delay or block presence updates. Recommended Checks confirm the Agent Chat plugin is activeconfirm AMB properties remain at expected defaultsreview whether custom widgets or Record Watchers are generating excessive event trafficreview whether the environment is ready for the OpenFrame bundle update where applicable Pre-checks Confirm presence event reaches browserConfirm awa.work_item responder behaviourEnable AWA loggingVerify AMB messages existValidate AMB properties Triage Login-only issue → investigate PRB2011118Intermittent / ongoing issue → investigate AMB saturationDelivered but not visible → investigate client-side behaviour Troubleshooting Review xmlstats.doInspect semaphore exhaustionIdentify high-volume watchers / widgetsOptimise watcher filtersReview known platform fixesTest mitigations in sub-production first NOTE: This checklist is intended to speed up triage and avoid unnecessary requests for broad diagnostics before baseline validation is complete. 10. Summary Most 3CLogic AWA presence sync issues fall into one of the following categories: initial login race conditionAMB message congestioncustom Record Watcher or widget floodingclient-side rendering or notification gap The most effective troubleshooting workflow is: Validate event flowConfirm message creationCheck AMB configurationClassify the issue patternTroubleshoot the correct layerApply known fixes or targeted mitigations