Skip to main content

Change Document: v2.3.1.0 — Screen Pop URL Diagnostic Telemetry

FieldValue
Version2.3.1.0
Date2026-03-09
ExtensionBC Dialing Application (Cambay Solutions)
SeverityLow — diagnostic telemetry only, no behavioral changes
StatusImplemented — ready for deployment

Background

CS agents reported Friday (2026-03-07) that the Nextiva screen pop is still not working — the customer card is not opening when inbound calls arrive. The screen pop URL is generated by the extension and returned to Nextiva's CRM connector, which opens it in the agent's browser. Without visibility into the actual URL being generated, diagnosing the root cause requires either reproducing the issue with a debugger attached (not possible in Production) or adding targeted telemetry.

The existing telemetry (BCDIALER-4000, BCDIALER-4001) logs that a customer was found or created, but does not log the URL itself. The fallback telemetry (BCDIALER-0001) logs when the config-driven Base URL is empty and the hardcoded fallback is used, but does not log the URL value in either case.

This version adds a single new telemetry event (BCDIALER-0010) that logs the complete URL generation chain — the base URL template, the customer number substituted in, and the final URL — on every screen pop request. This enables diagnosis of screen pop failures directly from Application Insights without any code changes or user interaction.


Summary of Changes

#SeverityCategoryDescription
1LowAddedScreen pop URL telemetry (BCDIALER-0010) on CU-60000, Page 80000, and Page 80003

Detailed Changes

1. Screen Pop URL Telemetry — BCDIALER-0010 (Low)

Files modified:

  • src/Codeunit/CU-60000.PhoneIntegration.al — 2 call sites (existing customer, new customer)
  • src/Page/Pag-80000.ReceivePhoneNumber.al — 2 call sites (existing customer, new customer)
  • src/Page/Pag-80003.ReceiveEmail.al — 2 call sites (existing customer, new customer)

What changed: After each StrSubstNo(BaseURL, CustomerNo) call that generates the screen pop URL, a Session.LogMessage call emits event BCDIALER-0010 at Verbosity::Normal with a Dictionary of [Text, Text] containing four custom dimensions:

DimensionDescription
SourceThe AL object that generated the URL (CU-60000, Pag-80000, or Pag-80003)
CustomerNoThe customer number substituted into the URL template
BaseURLThe URL template — either from NextivaConfig or the hardcoded fallback
CustomerURLThe final URL after StrSubstNo substitution

Why Dictionary instead of key-value pairs: The Session.LogMessage key-value overload supports a maximum of 2 custom dimension pairs (4 optional Text arguments). This telemetry requires 4 pairs, so the Dictionary of [Text, Text] overload is used instead.

Data classification: DataClassification::OrganizationIdentifiableInformation — the URL contains the BC tenant ID and company name, which are organization-identifiable. No customer PII (name, phone, email) is included in the URL itself; only the BC customer number is present.

Behavioral impact: None. The telemetry is emitted after the URL is already assigned to the response. It adds no database operations, no HTTP calls, and no branching logic. The Clear(CustomDimensions) call before each Add sequence ensures the dictionary is clean when the same variable is used for both branches (existing vs. new customer) in CU-60000.


Querying the Telemetry

After deployment, query the extension-level Application Insights resource (903e82d8-7601-46be-b49e-ce5c26d64547):

traces
| where timestamp > ago(7d)
| where customDimensions.eventId == "ALBCDIALER-0010"
| project timestamp,
message,
Source = tostring(customDimensions.Source),
CustomerNo = tostring(customDimensions.CustomerNo),
BaseURL = tostring(customDimensions.BaseURL),
CustomerURL = tostring(customDimensions.CustomerURL)
| order by timestamp desc

What to look for:

  • BaseURL missing %1 — if the NextivaConfig BC Base URL was saved without the %1 placeholder, StrSubstNo produces a URL without a customer filter. The screen pop opens the Customer List with no filter instead of a specific customer card.
  • BaseURL pointing to wrong environment — if the URL contains Sandbox instead of Production, or the wrong tenant ID, the screen pop will fail or open the wrong environment.
  • CustomerNo blank — if the customer lookup or creation failed silently, the substituted URL would contain an empty filter value.
  • No events at all — if BCDIALER-0010 events are absent but BCDIALER-4000/BCDIALER-4001 events are present, the extension version in Production is pre-2.3.1.0.

Object Inventory

No new objects. Modified objects only:

ObjectIDTypeStatusDescription
PhoneIntegration60000CodeunitModifiedAdded BCDIALER-0010 telemetry (2 call sites)
ReceivePhoneNumber80000PageModifiedAdded BCDIALER-0010 telemetry (2 call sites)
ReceiveEmail80003PageModifiedAdded BCDIALER-0010 telemetry (2 call sites)

Deployment Notes

  • No data migration required — telemetry-only change with no schema modifications
  • No configuration changes required — no new fields, no new setup pages
  • Backwards compatible — the new telemetry events are additive; they do not modify any existing events or behavior
  • Deployment sequence: Standard publish — no pre-deployment or post-deployment steps beyond the normal extension update process
  • Verification: After deployment, trigger an inbound call or email and confirm BCDIALER-0010 events appear in Application Insights within 5-10 minutes (standard telemetry ingestion delay)

Known Limitations

  • Telemetry ingestion delay — Application Insights has a 2-10 minute ingestion delay. Events are not queryable in real time.
  • URL length — the CustomerURL custom dimension is limited by Application Insights' custom dimension value length (8,192 characters). The BC screen pop URL is well under this limit, but if the Base URL template were unusually long, the value could be truncated.