BigQuery → Cisco Webex Contact Center Mapping

Field-level mapping from the flattened ccaas_raw_lab BigQuery tables (output of the CCAI → BigQuery pipeline) to the Cisco Webex Contact Center schema. This page is a scaffold — structure and styling are in place; the mapping rows are placeholders to be filled in.

Draft. Every TBD cell below needs a real source column, target field, and transform. Do not treat any row as authoritative yet.

1. Overview

Purpose: define how each column in the query-ready BigQuery tables lands in Cisco Webex Contact Center (and/or Webex CC Analyzer / the Reporting & Analytics data model), so the CCAI/UJET POC data can be reconciled against or loaded into Webex CC.

2. Flow

flowchart LR
    BQ["ccaas_raw_lab (BigQuery)\nmetadata / session_data_feeds / ujet_session_summaries"]
    T["Transform / mapping layer\n(TBD: SQL view, dbt, script)"]
    WX["Cisco Webex Contact Center\n(TBD: API / import / Analyzer model)"]
    BQ --> T --> WX
      

3. Environments & references

ItemSource (BigQuery)Target (Cisco Webex CC)
Project / orgp-640-lab-itmscTBD Webex org ID
Dataset / objectccaas_raw_labTBD
Accessroles/bigquery.dataViewerTBD (Control Hub / API token)
DocsPipeline runbookTBD link to Webex CC schema docs

4. Mapping conventions

5. Cisco report fields — SummaryDaily Reports (Agent-Detail)

Target Excel/Sheets export: SummaryDaily Reports(Agent-Detail). 33 columns, one row per agent × time interval. Column letters are the spreadsheet positions.

New column: BigQuery field = the source column in ccaas_raw_lab.metadata_current that feeds this Cisco field (from the mapping in section 6). Violet = Kevin asked for this on the Sep 10 call.

#ColFieldKindSampleBigQuery fieldNotes
1ALOBdimBDUSnone (const / derive)line of business
2BWeekdim29created_atISO week number
3CDatedim07/14/2026created_atMM/DD/YYYY
4DPQ IDdim5059selected_menu_idprecision queue ID
5EPQ NamedimUS_BDselected_menu_nameprecision queue name
6FTeam NamedimUS_YAK_MS7noneTBD
7GAgentdimElizabeth_Pinonagent_info_nameFirst_Last
8HHourdim5created_athour of day (0–23)
9ITime Intervaldim5:45:00queued_at15-min interval start
10JUnique IDkeyDaily_Agent_29_20260714-0545_BDUS_5059_8748composite (no single column)Period_Source_Week_YYYYMMDD-HHMM_LOB_PQID_AgentID
11KPerioddimDailyconstgrain label
12LSourcedimAgentconstTBD
13MAgentIDkey8748agent_info_idCisco agent ID
14NPeripheralNumberkey623040noneperipheral / login ID
15OAgentOut Callsmeasure0call_typecount
16PAgentOut Calls TalkTimemeasure0:00:00call_duration + call_typeHH:MM:SS
17QCalls Answeredmeasure0connected_at / statuscount
18RCallsAbandonedmeasure0status / fail_reason / connected_atcount
19SAvg Talktimemeasure0:02:22call_durationHH:MM:SS
20TAvg WorkTimemeasure0:00:00handle_durations.acw_duration (none in flat metadata_current)HH:MM:SS
21UAvg HoldTimemeasure0:00:00hold_durationHH:MM:SS
22VAHTmeasure0:00:00call_duration + hold_duration + workavg handle time
23WTransferInmeasure0transfers_count / participants_jsoncount
24XTransferOutmeasure0transfers_count / participants_jsoncount
25YAvailable Timemeasure0:08:21noneHH:MM:SS
26ZNot Ready Timemeasure0:01:45noneHH:MM:SS
27AARONAmeasure0noneredirect on no answer count
28ABAbandoned Hold Callsmeasure0nonecount
29ACTotal Logged In Timemeasure0:07:17noneHH:MM:SS
30ADTotal Work Timemeasure0:00:00handle_durations.acw_duration (none in flat metadata_current)HH:MM:SS
31AECallsHandledmeasure1id / connected_atcount
32AFTotal Talk Timemeasure0:02:22call_durationHH:MM:SS
33AGTotal Hold Timemeasure0:00:00hold_durationHH:MM:SS

Grain of this report = agent × 15-minute interval × precision queue, aggregated to Daily. The CCAI/UJET BigQuery data is per call, so mapping requires a GROUP BY to this grain.

5b. Actual BigQuery table — ccaas_raw_lab.metadata_current

The live per-call table in p-640-lab-itmsc.ccaas_raw_lab. Confirmed from SELECT * FROM metadata_current WHERE session_key = 'call-12175'. Same columns as the flat metadata table plus five view-added columns (channel, provider_channel_id, session_key, provider_conversation_id, row_hash).

#ColumnTypeSample (call-12175)
1idINT6412175
2call_uuidSTRING57272f16-15c2-4cac-b4b4-ca26…
3langSTRINGen
4call_typeSTRINGVoice Inbound (IVR)
5session_typeSTRINGVoice Inbound (IVR)
6session_type_v2STRINGVoice Inbound (IVR)
7statusSTRINGfinished
8created_atTIMESTAMP2026-09-04 16:05:28 UTC
9queued_atTIMESTAMP2026-09-04 16:08:14 UTC
10assigned_atTIMESTAMP2026-09-04 16:08:30 UTC
11connected_atTIMESTAMP2026-09-04 16:05:53 UTC
12ends_atTIMESTAMP2026-09-04 16:09:04 UTC
13updated_atTIMESTAMP2026-09-04 16:10:37 UTC
14wait_durationINT640
15call_durationINT64251 (seconds)
16hold_durationINT640
17has_feedbackBOOLfalse
18out_ticket_idSTRING003D700001H5yyMIAR
19out_ticket_urlSTRINGhttps://costcowholesalecorporation2--itmscqa.sandbox.my.salesforce.com/…/Contact/003D700001H5yyMIAR/view
20is_out_ticket_accountBOOLtrue
21verifiedBOOLfalse
22recording_urlSTRINGnull
23recording_permissionSTRINGnot_asked
24voicemail_reasonSTRINGnot_voicemail
25deflectionSTRINGno_deflection
26disconnected_bySTRINGdisconnected_by_end_user
27fail_reasonSTRINGnothing
28support_numberSTRING+18153935508
29selected_menu_idINT648
30selected_menu_nameSTRINGUS_ECOMM_General_CB
31selected_menu_typeSTRINGivr_menu
32menu_path_items_countINT643
33menu_path_nameSTRINGRouting Queues/ECOMM General…
34menu_path_materialized_pathSTRING2/6/8
35queue_priority_levelINT640
36agent_info_idINT6431
37agent_info_nameSTRINGChandrika Veerkar
38end_user_idINT643014
39end_user_out_contact_idSTRING003D700001H5yyMIAR
40offer_typeSTRINGcascade
41answer_typeSTRINGmanual
42participants_countINT643
43transfers_countINT640
44escalations_countINT641
45recordings_countINT641
46participants_jsonSTRING (JSON)[{adapter_fail_code, agent_assist, call_duration:216, call_id:12175, connected_at…}]
47recordings_jsonSTRING (JSON)[{call_id:12175, conference_sid, duration:137, id:8949, recording_type:"virtual_agent", redaction_times:[], started_at…}]
48va_handle_durations_jsonSTRING (JSON)[{call_duration:137, ended_at, escalation_reason:"by_virtual_agent", fallback_response_count:0, finish_reason:"esca…"}]
49consumer_handle_durations_jsonSTRING (JSON)[{call_duration:216, ended_at, hold_duration:0, id:7489, started_at…}]
50raw_jsonJSON{adapter_fail_code:null, agent_info:{agent_number:null, avatar_url:"https://qat-640-aqd2ubm.uw1.ccaiplatform.com/as…"}}
51channelSTRINGcall
52provider_channel_idSTRINGnull
53session_keySTRINGcall-12175
54provider_conversation_idSTRING57272f16-15c2-4cac-b4b4-ca26…
55row_hashSTRING1039963cedffa245d467e4c77a…

Observed value samplescall_type/session_type: Voice Inbound (IVR); status: finished; disconnected_by: disconnected_by_end_user; fail_reason: nothing; offer_type: cascade; answer_type: manual; deflection: no_deflection; recording_permission: not_asked; voicemail_reason: not_voicemail; channel: call.

6. metadata_current → Cisco report field

Left column = real column in ccaas_raw_lab.metadata_current. The report grain is agent × 15-min interval × precision queue, so most rows below need a GROUP BY rollup off the per-call table.

Cisco report fieldQuery table sourceTransformNotes
LOBnoneconst / deriveno CCAI column. Constant (BDUS) or derive from menu_path_name / selected_menu_name prefix (e.g. US_ECOMM_*)
Weekcreated_atderive: EXTRACT(ISOWEEK FROM created_at)confirm week-start convention vs Cisco
Datecreated_atcast: FORMAT_DATE('%m/%d/%Y', DATE(created_at, tz))source is UTC; Cisco report likely local tz
PQ IDselected_menu_idlookupsample 8. Needs menu-id → Cisco precision-queue-id cross-walk
PQ Nameselected_menu_name / menu_path_namelookupsample US_ECOMM_General_CB / Routing Queues/ECOMM General…
Team Namenonelookupno CCAI column — needs agent → team roster
Agentagent_info_namedirect + reformatsample Chandrika Veerkar; Cisco uses First_Last → replace space with _
Hourcreated_atderive: EXTRACT(HOUR FROM created_at, tz)pick which timestamp defines the interval (created / connected / assigned)
Time Intervalcreated_atderive: floor to 15 min → H:MM:SSsame timestamp choice as Hour
Unique ID— (composite)concatPeriod_Source_Week_YYYYMMDD-HHMM_LOB_PQID_AgentID
Periodconst: Dailyreport is a daily rollup
Sourceconst: Agentagent-detail report
AgentIDagent_info_idlookupsample 31. Cisco AgentID sample 8748 — different ID space, cross-walk needed
PeripheralNumbernonelookupno CCAI column — from Cisco agent record
AgentOut Callscall_typederive: COUNTIF(call_type is an outbound type)only inbound value seen so far (Voice Inbound (IVR)); confirm outbound label
AgentOut Calls TalkTimecall_duration + call_typederive: SUM(call_duration) where outbound → HH:MM:SSTBD outbound label
Calls Answeredstatus / connected_at / answer_typederive: COUNTIF(connected_at IS NOT NULL) or status='finished'only finished status seen; enumerate the rest
CallsAbandonedstatus / fail_reason / connected_atderive: COUNTIF(queued_at IS NOT NULL AND connected_at IS NULL)fail_reason='nothing' = no failure; confirm abandoned encoding
Avg Talktimecall_durationderive: AVG(call_duration) → HH:MM:SSseconds. Sample 251; consumer_handle_durations shows 216 — confirm which is "talk"
Avg WorkTimenonederiveafter-call work not in table; possibly assigned_atends_at gap, or from a JSON field
Avg HoldTimehold_durationderive: AVG(hold_duration) → HH:MM:SSseconds. Sample 0
AHTcall_duration + hold_duration (+ work)derive: AVG(handle) → HH:MM:SSfix the handle-time formula once WorkTime source is known
TransferIntransfers_count / participants_jsonderivecount=0 here; direction only in participants_json / raw_json
TransferOuttransfers_count / participants_jsonderiveparse JSON for direction; escalations_count (=1) may be relevant
Available Timenonederiveagent state time — not in CCAI call export
Not Ready Timenonederiveagent state time — not in CCAI call export
RONAnonederiveredirect-on-no-answer — maybe from session_data_feeds events; not in metadata
Abandoned Hold Callsnonederiveno direct column; hold_duration>0 AND abandoned?
Total Logged In Timenonederiveagent session time — not in CCAI call export
Total Work Timenonederivesame as Avg WorkTime — source unknown
CallsHandledid / connected_atderive: COUNT(*) where agent connected, in graindefine "handled" (connected to a human agent)
Total Talk Timecall_durationderive: SUM(call_duration) → HH:MM:SSseconds
Total Hold Timehold_durationderive: SUM(hold_duration) → HH:MM:SSseconds

Coverage gap: many Cisco fields (PeripheralNumber, Team Name, Available Time, Not Ready Time, Total Logged In Time, RONA) describe agent state / roster, which the CCAI/UJET call export does not contain. Those need a separate source (Cisco Finesse / agent roster / real-time state feed).

6c. Kevin's requirements — working session (Sep 10, 2026)

Source: "Schedule CCaaS Exports to CC Archive" working session, Kevin McCoy (reporting owner) & Rohit Godugu. Notes below are a summary; verify against the recording before building.

What Kevin wants — two report shapes

  1. Queue report — nothing to do with individual agents.
    • Dimensions: Queue and time interval (date is split out but is the same axis).
    • The "big five" measures: Offered, Answered, Abandoned (roughly offered − answered), Service Level (% of answered calls answered within a configured threshold), ASA (average speed of answer — how long answered calls waited).
    • 6th: Longest wait time in the interval (for answered calls).
    • Nice-to-have: max calls in queue at each interval.
    • Collected but not critical: abandon-within-30s buckets, abandoned-by-agent vs abandoned-by-member.
  2. Agent report.
    • Dimensions: time interval, queue, agent.
    • Core measures (the ones they actually need): Calls Answered, Talk Time, Work Time (after-call wrap-up), Hold Time. Talk + Work + Hold = Handle Time (AHT).
    • "Take it if we have it": Agent-Out calls, Transfer In / Transfer Out (historically unreliable).
    • Low value: Logged-In / Available / Not-Ready time — double-counts when an agent is logged into multiple queues (every logged-in second counts on every queue).

What Kevin actually wants — CCAI side vs Cisco side

One row per attribute/measure Kevin asked for. CCAI (BigQuery) = column in ccaas_raw_lab.metadata_current (or a derivation from it). Cisco = column in the SummaryDaily Reports export. italic grey = not available on that side.

Finding from the raw JSON: the record carries two separate arrays — escalations[] (has 1 entry here: VA → human agent, with fromVirtualAgent, toAgent, createdAtescalatedAt) and transfers[] (empty here). That's very likely the VA→HA / HA→HA split Kevin asked about: escalations[] = VA→HA transfer time (escalatedAtcreatedAt = 31s in this sample), transfers[] = HA→HA transfer time (structure unconfirmed — no sample record with a human-to-human transfer yet).

A. Queue report — dimensions

What Kevin wantsCCAI (BigQuery) — metadata_currentCisco — SummaryDaily reportGCS BigQuery columnCCAI (JSON data)Manual mapping (Cisco↔CCAI CSV doc)
Queue ID / Queue Nameselected_menu_id, selected_menu_name, menu_path_name, menu_path_materialized_pathPQ ID (5059), PQ Name (US_BD), LOB (BDUS — Cisco-only field, no CCAI/GCS column carries LOB at all)selected_menu_id (8), selected_menu_name (US_ECOMM_General_CB)selectedMenu.id (8), selectedMenu.name (US_ECOMM_General_CB)
"selectedMenu": {
  "id": 8,
  "name": "US_ECOMM_General_CB",
  "parentId": 6,
  "menuType": "ivr_menu"
}
"menuPath": {
  "name": "Routing Queues/ECOMM General/US_ECOMM_General_CB",
  "materializedPath": "2/6/8"
}
CiscoCCAINote
PQ Name (US_MS_SCB), PQ ID (5137), Team Name US_OKC_EC15 (Table 1 row 1)menu_path leaf segment (US_MS_General_CB), selected_menu (US_MS_General_CB)Names don’t match 1:1 — only the LOB/category segment does (Membership → MSUS)
Time intervalqueued_at (floor to 15 min) — also assigned_at / created_atTime Interval (5:45:00), Hour (5)queued_at (2026-09-04 16:08:14 UTC)queuedAt (2026-09-04T16:08:14.000Z)
CiscoCCAINote
Date (07/14/2026), Hour (5), Time Interval (5:45:00)startTime (2026-08-31T22:41:50Z)Cisco pre-aggregates to a 15-min bucket; CCAI keeps the raw event timestamp
DateDATE(queued_at)Date (07/14/2026), Weekqueued_at (2026-09-04 16:08:14 UTC)queuedAt (2026-09-04T16:08:14.000Z)
CiscoCCAINote
Date (07/14/2026)startTime / createTimeSame source pair as Time interval row above

B. Queue report — measures ("the big five" + 2)

What Kevin wantsCCAI (BigQuery) — metadata_currentCisco — SummaryDaily reportGCS BigQuery columnCCAI (JSON data)Manual mapping (Cisco↔CCAI CSV doc)
Offered (calls coming in)derive: COUNT(*) where queued_at IS NOT NULLnot in Agent-Detail — in Queue reportqueued_at (2026-09-04 16:08:14 UTC)queuedAt (2026-09-04T16:08:14.000Z)
CiscoCCAINote
— (no field named)COUNT(calls.id)total_calls_offered (SQL, Table 5 §2)No direct Cisco equivalent named anywhere in the manual doc
Answered (to an agent)derive: COUNTIF(assigned_at IS NOT NULL) / agent_info_id setCalls Answered (0 in Cisco sample; Table 4 real row: 1)assigned_at (2026-09-04 16:08:30 UTC)assignedAt (2026-09-04T16:08:30.000Z)
CiscoCCAINote
SUM(Calls Answered) = 1COUNT(status='finished') = 11 − 1 = 0 — ✓ perfect match (Table 4)
Abandoned (offered − answered)derive: queued_at IS NOT NULL AND assigned_at IS NULLCallsAbandoned (0)queued_at (2026-09-04 16:08:14 UTC), assigned_at (2026-09-04 16:08:30 UTC)queuedAt, assignedAt
CiscoCCAINote
CallsAbandoned (0)status (finished), finish_reason_1 (escalated)Table 3 “Status/Outcome” keyword row
Service Level (% answered within threshold)derive: COUNTIF((assigned_at - queued_at) <= threshold) / COUNTIF(answered) — threshold TBDnot in Agent-Detail — in Queue reportassigned_at (16:08:30), queued_at (16:08:14) — 16s wait in this sampleassignedAt, queuedAt
CiscoCCAINote
Not covered anywhere in Tables 0–5 — a real gap on both sides
ASA (avg speed of answer)derive: AVG(assigned_at - queued_at)not in Agent-Detail — in Queue reportassigned_at (16:08:30), queued_at (16:08:14)assignedAt, queuedAt
CiscoCCAINote
Not covered in the manual-mapping doc
Longest wait time (interval)derive: MAX(assigned_at - queued_at) over answerednot in Agent-Detail — in Queue reportassigned_at (16:08:30), queued_at (16:08:14)assignedAt, queuedAt
CiscoCCAINote
Not covered in the manual-mapping doc
Max calls in queue / interval (nice-to-have)concurrency calc over queued_atassigned_at — hard from per-call rowsnot in Agent-Detail — in Queue reportqueued_at, assigned_atqueuedAt, assignedAt
CiscoCCAINote
Not covered in the manual-mapping doc
Abandon <30s buckets / abandoned-by (collected, not critical)disconnected_by + wait mathpartial: Abandoned Hold Calls (0)disconnected_by (disconnected_by_end_user)disconnectedBy (disconnected_by_end_user)
CiscoCCAINote
Not covered in the manual-mapping doc

C. Agent report — dimensions

What Kevin wantsCCAI (BigQuery) — metadata_currentCisco — SummaryDaily reportGCS BigQuery columnCCAI (JSON data)Manual mapping (Cisco↔CCAI CSV doc)
Time intervalassigned_at / connected_at (floor to 15 min)Time Interval (5:45:00), Hour (5), Date (07/14/2026)assigned_at (2026-09-04 16:08:30 UTC)assignedAt (2026-09-04T16:08:30.000Z)
CiscoCCAINote
Date/Hour/Time IntervalstartTime/createTimeSame timestamp mapping as table A
Queue ID / Queue Nameselected_menu_name / menu_path_namePQ ID (5059), PQ Name (US_BD)selected_menu_id (8), selected_menu_name (US_ECOMM_General_CB)selectedMenu.id (8), selectedMenu.name (US_ECOMM_General_CB)
CiscoCCAINote
LOB (MSUS), PQ ID (5137), PQ Name (US_MS_SCB)menu_paths.materialized_path (Routing Queues/Membership/US_MS_General_CB)Category segment → LOB, leaf segment → PQ Name (Table 5 §5)
Agent ID / Agent Nameagent_info_id (31), agent_info_name ("Chandrika Veerkar")Agent (Elizabeth_Pinon), AgentID (8748), Team Name (US_YAK_MS7), PeripheralNumber (623040)agent_info_id (31), agent_info_name (Chandrika Veerkar)agentInfo.id (31), agentInfo.name (Chandrika Veerkar)
CiscoCCAINote
Agent (Elizabeth_Pinon), AgentID (8748)BOT agentName (QAT-Voice-Member-Self-Service), agentType (AUTOMATED_AGENT) — HUMAN qualityMetadata.displayName (Farhan Hussain), qualityMetadata.agentId (2)CCAI record carries two agent identities (bot + human); only the human one maps to Cisco Agent/AgentID (Table 0)

D. Agent report — measures

What Kevin wantsCCAI (BigQuery) — metadata_currentCisco — SummaryDaily reportGCS BigQuery columnCCAI (JSON data)Manual mapping (Cisco↔CCAI CSV doc)
Calls Answered (per agent, row = credit)derive: COUNT rows per agent where connectedCalls Answered (0 sample / 1 real row), CallsHandled (1)id (12175), connected_at (2026-09-04 16:05:53 UTC)id (12175), connectedAt (2026-09-04T16:05:53.000Z)
CiscoCCAINote
SUM(Calls Answered) = 1COUNT(status='finished') = 11 − 1 = 0 — ✓ perfect match
Talk Time (on phone with member)call_duration (251s) — or consumer_handle_durations_json.call_duration (216s), confirm whichAvg Talktime (0:02:22), Total Talk Time (0:02:22)call_duration (251)callDuration (top-level, 251) vs consumerHandleDurations[].callDuration (216)
CiscoCCAINote
Total Talk Time (0:01:55 = 115s)duration (115s)115s − 115s = 0s — ✓ perfect match; formula: SUM(call_duration) = Cisco Total Talk Time
Work Time (after-call wrap-up)no dedicated column — candidate: updated_atends_at (93s in sample)Avg WorkTime (0:00:00), Total Work Time (0:00:00)handle_durations.acw_duration (0, 90 — nested only)handleDurations[].acwDuration (0, 90)
CiscoCCAINote
Total Work Time (0:00:00 sample)acw_durationSUM(perf_call_handle_durations.acw_duration)Confirms acw_duration (our handleDurations[].acwDuration) is the correct Work Time source — closes the gap flagged elsewhere in this doc
Hold Time (member on hold)hold_duration (0s)Avg HoldTime (0:00:00), Total Hold Time (0:00:00)hold_duration (0)holdDuration (top-level, 0) / handleDurations[].holdDuration (0, null)
CiscoCCAINote
Total Hold Time (0:00:00)hold_duration (0s)0s − 0s = 0s — ✓ perfect match
Handle Time = Talk + Work + Holdderive (blocked on Work Time)AHT (0:00:00 sample)call_duration (251) + hold_duration (0) + handle_durations.acw_duration (0, 90)callDuration (251) + holdDuration (0) + handleDurations[].acwDuration (0, 90)
CiscoCCAINote
AHT(Talk + Hold + ACW) / CallsHandledMatches our derivation once Work Time = acw_duration
Agent-Out calls (if available)call_type (only "Voice Inbound (IVR)" seen — confirm outbound value)AgentOut Calls (0), AgentOut Calls TalkTime (0:00:00)call_type (Voice Inbound (IVR))callType (Voice Inbound (IVR))
CiscoCCAINote
AgentOut Calls (0)— (no field named)Listed alongside TransferOut in the Transfers & Escalations domain; no dedicated CCAI table field named
Transfer In / Transfer Out (if available) — likely VA→HA (escalations[]) vs HA→HA (transfers[])transfers_count (0) + direction inside participants_jsonTransferIn (0), TransferOut (0)
session_key: call-12175
TransferIn: 0
TransferOut: 0
AgentID: 31 (no per-transfer name field exists in
  Cisco's Agent-Detail export -- only aggregate counters;
  no comm_transfers-style from/to record is available for
  this call since Cisco doesn't track call-12175 at all)
transfers_count (0), handle_durations.transfer (false, false)
session_key: call-12175
participants_json[2]:
  id: 23804
  type: "agent"
  entry_type: "queue_or_transfer"
  user_id: 31
  first_name: "Chandrika"
  last_name: "Veerkar"
  status: "finished"

handle_durations[0].transfer: false
handle_durations[1].transfer: false
transfers[] (empty — HA→HA) vs escalations[] (1 entry — VA→HA, createdAt 16:08:10 → escalatedAt 16:08:41 = 31s) vs handleDurations[].transfer (false, false). Real escalation/transfer ID: escalations[0].id = 5849; handleDurations[].transferId = null (both legs, since transfer is false)
session_key: call-12175
"transfers": [],
"escalations": [{
  "id": 5849,
  "status": "escalated",
  "reason": "by_virtual_agent",
  "createdAt": "2026-09-04T16:08:10.000Z",
  "escalatedAt": "2026-09-04T16:08:41.000Z",
  "fromVirtualAgent": {"id": 12, "name": "QAT-Voice-Member-Self-Service"},
  "toAgent": {"id": 31, "name": "Chandrika Veerkar"}
}]
"participants": [
  {"id": 23804, "type": "agent", "entryType": "queue_or_transfer",
   "userId": 31, "firstName": "Chandrika", "lastName": "Veerkar"}
]
"handleDurations": [
  {"id": 3580, "transfer": false, "transferId": null},
  {"id": 3581, "transfer": false, "transferId": null}
]
CiscoCCAINote
TransferIn + TransferOut = 0
no named party on either leg
finish_reason_1 = escalated = 1
VA “QAT-Voice-Member-Self-Service” → Agent “Chandrika Veerkar”
1 − 0 = +1 CCAI Escalation, ⚠ variance — bot escalation not counted as a Cisco transfer; comm_transfers only covers human-to-human, not VA→HA
session_key: call-12175
Cisco: TransferIn=0, TransferOut=0 (no name)
CCAI:  escalations[0].fromVirtualAgent.name = "QAT-Voice-Member-Self-Service"
       escalations[0].toAgent.name          = "Chandrika Veerkar"
Logged-In / Available / Not-Ready (low value)not in table — agent-state feed onlyTotal Logged In Time, Available Time, Not Ready Timenonenot in JSON
CiscoCCAINote
Available Time, Not Ready Time, Total Logged In Timeuser_activity_logs + user_statuses (status=Available/Break/etc.)The manual doc DOES map this, even though metadata_current doesn’t — needs the separate agent-state tables it names
RONA / redirect-on-no-answer (misc)not in metadata — maybe session_data_feeds eventsRONAnonenot in JSON
CiscoCCAINote
RONA (summed counter)— (no source table named)No CCAI-side source named in the manual doc either

E. Virtual-agent performance (Kevin wants this included, voice + chat)

What Kevin wantsCCAI (BigQuery) — metadata_currentCisco — SummaryDaily reportGCS BigQuery columnCCAI (JSON data)Manual mapping (Cisco↔CCAI CSV doc)
VA interactions enteredparticipants_json (virtual_agent entries), channelnot representedparticipants_json (1 of 3 entries type=virtual_agent), channel (call)participants[].type == "virtual_agent" (entry id 23803), virtualAgent (id 12, "QAT-Voice-Member-Self-Service")
{
  "id": 23803,
  "type": "virtual_agent",
  "status": "finished",
  "callDuration": 137,
  "connectedAt": "2026-09-04T16:05:53.000Z",
  "endedAt": "2026-09-04T16:08:10.000Z",
  "virtualAgent": {"conversationId": "119dw_UDr9XTGyfXuNujcf2Fw"}
}
"virtualAgent": {"id": 12, "name": "QAT-Voice-Member-Self-Service", "vaAlias": null}
CiscoCCAINote
Source (IVR)agentType (AUTOMATED_AGENT), va_count (1)Cisco does not manage virtual bot turns — only sees bot routing as incoming IVR traffic
VA answered / handledva_handle_durations_json (call_duration 137s, finish_reason)not representedvirtual_agent_handle_durations (call_duration 137, finish_reason escalated)virtualAgentHandleDurations[] (callDuration 137, finishReason "escalated", responseCount 23)
{
  "id": 7908,
  "virtualAgent": {"id": 12, "name": "QAT-Voice-Member-Self-Service"},
  "callDuration": 137,
  "escalationReason": "by_virtual_agent",
  "finishReason": "escalated",
  "responseCount": 23,
  "fallbackResponseCount": 0,
  "initiatedBy": "end_user",
  "startedAt": "2026-09-04T16:05:53.000Z",
  "endedAt": "2026-09-04T16:08:10.000Z"
}
CiscoCCAINote
— (no NLU/bot metrics)perf_call_va_handle_durations.call_durationbot_talk_secCisco only counts IVR-routed volume via Source='IVR'
Resolved / contained vs escalatedescalations_count (1), deflection (no_deflection), va_handle_durations_json.finish_reason ("esca…"), recordings_json.recording_type ("virtual_agent")not representedescalations_count (1), deflection (no_deflection), virtual_agent_handle_durations.finish_reason (escalated)escalations[].reason ("by_virtual_agent"), deflection (no_deflection), virtualAgentHandleDurations[].finishReason (escalated)
CiscoCCAINote
TransferIn/TransferOut countersescalation_reason_1 (by_virtual_agent), finish_reason_1 (escalated)Reconciled against Cisco Transfer counters and flagged as a variance — bot escalations aren’t Cisco transfers
Self-service MSA vs FAQ-bot splitmenu_path / sub-agent name / raw_json — field TBDnot representedTBDnot found — virtualAgent.name ("QAT-Voice-Member-Self-Service") is the closest signal but isn't a clean MSA/FAQ flagnot covered in the manual-mapping doc either — genuine open gap on both sides

F. Grain, keys & PII

What Kevin wantsCCAI (BigQuery) — metadata_currentCisco — SummaryDaily reportGCS BigQuery columnCCAI (JSON data)Manual mapping (Cisco↔CCAI CSV doc)
Stable interaction ID (distinct-call count)id (12175), session_key ("call-12175"), call_uuid, provider_conversation_idUnique ID (Daily_Agent_29_20260714-0545_BDUS_5059_8748)id (12175), session_key (call-12175)id (12175), callUuid (57272f16-15c2-4cac-b4b4-ca261bd8ef49)
CiscoCCAINote
Unique ID (Daily_Agent_29_20260714-0545_BDUS_5059_8748)conversationId (call-11903), id (11903), dialogflow_conversation_id_1Cisco Unique ID is a composite string, not a shared key
Chat IDsession_key "chat-*" (chats live in session_data_feeds)n/a in this reportsession_key (chat-*)not in this JSON (session_key is a view-added column, not a raw_json field)
CiscoCCAINote
— (n/a)session_key chat-7676 / chat-7681 / chat-7684 (Table 1 rows 24/29/33)Confirms chat sessions exist in the same CCAI export, keyed the same way as calls
One row per agent per interaction (transfer credit)table is 1 row/call, single agent_info_id — must explode participants_json (participants_count = 3)row-per-agent + Unique ID already assumedparticipants_json (3 entries)participants[] (3 entries: id 23802 end_user, id 23803 virtual_agent, id 23804 agent)
"participants": [
  {"id": 23802, "type": "end_user", "callId": 12175},
  {"id": 23803, "type": "virtual_agent", "callId": 12175},
  {"id": 23804, "type": "agent", "userId": 31, "callId": 12175}
]
not explicitly covered — Table 0's nested qualityMetadata array (bot + human agent profiles in one record) is the closest evidence this needs exploding
Participants per interactionparticipants_count (3), participants_jsonnot representedparticipants_count (3), participants_jsonparticipants.length (3), participants[]
{"id": 23802, "type": "end_user", "phoneNumber": "+918867813818"}
{"id": 23803, "type": "virtual_agent", "virtualAgent": {"conversationId": "119dw_UDr9XTGyfXuNujcf2Fw"}}
{"id": 23804, "type": "agent", "userId": 31, "firstName": "Chandrika", "lastName": "Veerkar",
 "teams": [{"id":10,"name":"US Ecomm Spanish Agents"}, {"id":13,"name":"PR Logistics English + Spanish"}]}
CiscoCCAINote
qualityMetadata nested array (agentType, displayName, agentId, teams)Human agent profile nested inside the bot’s CCAI record
Redact member phone numbersession_data_feeds.consumer_number, free-text body — mask before exportn/a (no transcript in report)consumer_numberparticipants[0].phoneNumber (+918867813818, present here, on the end_user participant — not just in session_data_feeds)not covered in the manual-mapping doc
Redact member namesession_data_feeds.body / transcript text — mask before exportn/abodynot present — endUser.identifier is null; no member name field in this JSONnot covered — every name in the manual doc (Farhan Hussain, Elizabeth_Pinon) is an agent name, never a member name, consistent with no member-name field existing
Keep support-line numbersupport_number (+18153935508)n/asupport_number (+18153935508)supportNumber (+18153935508)not covered in the manual-mapping doc

Cross-cutting requirements

Coverage vs our columns

Queue report

Kevin needsCisco Agent-Detail colCCAI metadata_currentStatus
Queue dimensionPQ ID / PQ Nameselected_menu_id / selected_menu_name / menu_path_nameDerivable — needs menu → human-PQ cross-walk
Time interval / dateDate / Hour / Time Intervalqueued_at / assigned_at / created_atDerivable (choose interval timestamp; tz)
Offered— (not in agent report)COUNT(*) where queued_at IS NOT NULLDerivable
AnsweredCalls AnsweredCOUNTIF(assigned_at IS NOT NULL) / agent_info_id setDerivable
AbandonedCallsAbandonedqueued_at IS NOT NULL AND assigned_at IS NULLDerivable — confirm encoding
Service LevelCOUNTIF(assigned_at - queued_at <= threshold)Derivable if threshold supplied
ASAAVG(assigned_at - queued_at)Derivable — see timestamp note below
Longest wait timeMAX(assigned_at - queued_at)Derivable
Max calls in queue / intervalconcurrency calc over queued_atassigned_atHard from per-call rows — Kevin: "not so important"
Abandon <30s buckets, abandoned-bypartial (Abandoned Hold Calls)disconnected_by + wait mathPartially derivable

Gap: the sample export we have is the Agent-Detail report only. Kevin needs a separate Queue-interval report (Offered / SL / ASA / Longest Wait / Max-in-Q) — get that report's column layout too.

Timestamp caution: for call-12175, connected_at (16:05:53) is before queued_at (16:08:14) — connected_at looks like the virtual-agent connect, while the human-queue wait is queued_atassigned_at (16:08:30). Confirm which pair defines ASA. wait_duration = 0 in the sample — confirm what it measures.

Agent report

Kevin needsCisco Agent-Detail colCCAI metadata_currentStatus
Interval / queue / agent dimsTime Interval / PQ * / Agent + AgentIDtimestamps / selected_menu_* / agent_info_id + agent_info_nameCovered (agent-ID cross-walk needed)
Calls AnsweredCalls Answered / CallsHandledCOUNT rows per agent (connected)Covered
Talk TimeAvg Talktime / Total Talk Timecall_duration (251s) — vs consumer_handle_durations_json.call_duration (216s)Derivable — confirm which is "talk"
Work Time (ACW)Avg WorkTime / Total Work Timeno dedicated column — maybe ends_atupdated_at gap (93s in sample)Gap — confirm ACW source
Hold TimeAvg HoldTime / Total Hold Timehold_duration (0s)Covered
Handle Time = Talk+Work+HoldAHTderive once Work Time is definedBlocked on Work Time
Agent-Out callsAgentOut Calls / … TalkTimecall_type (only "Voice Inbound (IVR)" seen)Derivable — confirm outbound label
Transfer In / OutTransferIn / TransferOuttransfers_count (0) + direction in participants_jsonDerivable via JSON explode
Per-agent credit on transfersrow per agent + Unique IDmetadata_current = 1 row/call, single agent_info_idGap — need a participant-level table (explode participants_json, participants_count=3)
Logged-In / Available / Not-ReadyTotal Logged In Time / Available Time / Not Ready Timenot presentGap — agent-state feed; Kevin rates these low-value anyway

Virtual agent / containment

Kevin needsCCAI sourceStatus
VA interactions enteredparticipants_json (virtual_agent entries), channelDerivable
VA answered / handledva_handle_durations_json (call_duration, finish_reason)Derivable
Resolved / contained vs escalatedescalations_count (1), deflection (no_deflection), va_handle_durations_json.finish_reason ("esca…"), offer_type (cascade)Derivable
Self-service MSA vs FAQ bot splitmenu_path / sub-agent name / raw_jsonTBD — find the distinguishing field

Grain & keys

Kevin needsCCAI sourceStatus
Stable interaction ID (calls)id / session_key (call-12175) / call_uuid / provider_conversation_idCovered
Chat IDsession_key pattern (chat-* in session_data_feeds)Covered (chats live in the other tables)
Participants per interactionparticipants_count (3) / participants_jsonCovered
One row per agent per interactionexplode participants_jsonGap — build the participant-grain table

PII

Kevin needsWhere it appearsAction
Redact member phone numbersession_data_feeds.consumer_number, free-text bodyMask before export
Redact member namesession_data_feeds.body / transcript textMask before export
Support-line number OKmetadata_current.support_number (+18153935508)Keep
Internal IDs OKend_user_id (3014), end_user_out_contact_id (SF contact)Keep (review SF ID)

Bottom line: the CCAI per-call table covers most of Kevin's queue measures (Offered / Answered / Abandoned / ASA / Longest Wait are all derivable from the queued_at/assigned_at pair) and most agent core measures (Answered, Talk, Hold). Four real gaps: (1) after-call Work Time has no clear column; (2) per-agent rows on transfers need a participant-grain table; (3) agent-state times (Logged-In / Available / Not-Ready) aren't in the export; (4) we're missing the Queue-interval report layout from Cisco.

6d. One record, fully expanded — call-12175

Every field of a single BigQuery row (session_key = 'call-12175'), flattened section → item → field, exactly as it comes back from the nested-repeated query. This shows what one real interaction record actually contains, field by field.

Legend: violet = field name Kevin asked for (or directly feeds a measure he asked for) on the Sep 10 call. orange = value already has a matching column in Cisco's SummaryDaily Reports (Agent-Detail) export. Violet with no orange means Kevin wants it but Cisco's Agent-Detail report doesn't carry it (queue-level measures like Offered/Service Level/ASA, VA metrics, and the VA→HA / HA→HA transfer-time split all fall in this bucket — they're derived from these raw fields, not a literal Cisco column).

SectionItemFieldValue
agent_info-avatar_urlhttps://qat-640-aqd2ubm.uw1.ccaiplatform.com/assets2/default-profile.png
agent_info-emailc_cveerkar@costco.com
agent_info-first_nameChandrika
agent_info-id31
agent_info-last_nameVeerkar
agent_info-nameChandrika Veerkar
answer_type--manual
assigned_at--2026-09-04T09:08:30.000-07:00
auto_session_summaries0participant_id23804
auto_session_summaries0session_summarysituation / No issue identified / action / No action taken / resolution
auto_session_summaries0session_summary_sections.actionNo action taken
auto_session_summaries0session_summary_sections.resolutionN
auto_session_summaries0session_summary_sections.situationNo issue identified
auto_session_summaries0user_id31
call_duration--251
call_type--Voice Inbound (IVR)
call_uuid--57272f16-15c2-4cac-b4b4-ca26...
connected_at--2026-09-04T09:05:53.000-07:00
consumer_handle_durations0call_duration216
consumer_handle_durations0ended_at2026-09-04T09:09:04.000-07:00
consumer_handle_durations0hold_duration0
consumer_handle_durations0id7489
consumer_handle_durations0started_at2026-09-04T09:05:28.000-07:00
consumer_in_menu_durations0duration21
consumer_in_menu_durations0ended_at2026-09-04T09:05:49.000-07:00
consumer_in_menu_durations0eventfinished
consumer_in_menu_durations0id11406
consumer_in_menu_durations0langen
consumer_in_menu_durations0started_at2026-09-04T09:05:28.000-07:00
created_at--2026-09-04T09:05:28.000-07:00
deflection--no_deflection
disconnected_by--disconnected_by_end_user
end_user-id3014
end_user-out_contact_id003D700001H5yyMIAR
ends_at--2026-09-04T09:09:04.000-07:00
escalations0created_at2026-09-04T09:08:10.000-07:00
escalations0escalated_at2026-09-04T09:08:41.000-07:00
escalations0from_menu_path.items_count3
escalations0from_menu_path.materialized_path2/10/34
escalations0from_menu_path.nameRouting Queues/Steering Menu...
escalations0from_virtual_agent.avatar_urlhttps://prod-ujet-server.prod.svc.cluster.local/assets2/default-virtual-agent-avatar-1.png
escalations0from_virtual_agent.id12
escalations0from_virtual_agent.nameQAT-Voice-Member-Self-Service
escalations0id5849
escalations0reasonby_virtual_agent
escalations0statusescalated
escalations0to_agent.avatar_urlhttps://qat-640-aqd2ubm.uw1.ccaiplatform.com/assets2/default-profile.png
escalations0to_agent.emailc_cveerkar@costco.com
escalations0to_agent.first_nameChandrika
escalations0to_agent.id31
escalations0to_agent.last_nameVeerkar
escalations0to_agent.nameChandrika Veerkar
escalations0to_menu_path.items_count3
escalations0to_menu_path.materialized_path2/6/8
escalations0to_menu_path.nameRouting Queues/ECOMM General...
fail_reason--nothing
handle_durations0acw_duration0
handle_durations0agent_id31
handle_durations0assigned_connection_duration10
handle_durations0bargedfalse
handle_durations0bcw_duration0
handle_durations0call_duration24
handle_durations0ended_at2026-09-04T09:09:04.000-07:00
handle_durations0hold_duration0
handle_durations0id3580
handle_durations0langen
handle_durations0menu_pathRouting Queues/ECOMM General...
handle_durations0menu_path_id6
handle_durations0started_at2026-09-04T09:08:40.000-07:00
handle_durations0transferfalse
handle_durations1acw_duration90
handle_durations1agent_id31
handle_durations1assigned_connection_duration0
handle_durations1bargedfalse
handle_durations1bcw_duration0
handle_durations1call_duration0
handle_durations1ended_at2026-09-04T09:10:34.000-07:00
handle_durations1id3581
handle_durations1langen
handle_durations1menu_pathRouting Queues/ECOMM General...
handle_durations1menu_path_id6
handle_durations1started_at2026-09-04T09:09:04.000-07:00
handle_durations1transferfalse
has_feedback--false
hold_duration--0
id--12175
is_out_ticket_account--true
lang--en
menu_path-items_count3
menu_path-materialized_path2/6/8
menu_path-nameRouting Queues/ECOMM General...
offer_events0casting_time2026-09-04T09:08:14.000-07:00
offer_events0groupGroup 1
offer_events1casting_time2026-09-04T09:08:21.000-07:00
offer_events1groupGroup 3
offer_type--cascade
out_ticket_id--003D700001H5yyMIAR
out_ticket_url--https://costcowholesalecorporation2--itmscqa.sandbox.my.salesforce.com/lightning/r/Contact/003D700001H5yyMIAR/view
participants0call_duration216
participants0call_id12175
participants0connected_at2026-09-04T09:05:28.000-07:00
participants0end_user_id3014
participants0ended_at2026-09-04T09:09:04.000-07:00
participants0entry_typequeue_or_transfer
participants0fail_reasonnothing
participants0id23802
participants0phone_number+918867813818
participants0statusfinished
participants0typeend_user
participants1call_duration137
participants1call_id12175
participants1connected_at2026-09-04T09:05:53.000-07:00
participants1ended_at2026-09-04T09:08:10.000-07:00
participants1entry_typequeue_or_transfer
participants1fail_reasonnothing
participants1id23803
participants1statusfinished
participants1typevirtual_agent
participants1virtual_agent.conversation_id119dw_UDr9XTGyfXuNujcf2Fw
participants1virtual_agent_id12
participants1virtual_agent_params.ani+918867813818
participants1virtual_agent_params.callId12175
participants1virtual_agent_params.channelcall
participants1virtual_agent_params.dnis+18153935508
participants2agent_assist.conversation_id081vdMdB1AOSuyHdJrSzo5v5Q
participants2call_duration24
participants2call_id12175
participants2connected_at2026-09-04T09:08:40.000-07:00
participants2emailc_cveerkar@costco.com
participants2ended_at2026-09-04T09:09:04.000-07:00
participants2entry_typequeue_or_transfer
participants2fail_reasonnothing
participants2first_nameChandrika
participants2id23804
participants2last_nameVeerkar
participants2statusfinished
participants2typeagent
participants2user_id31
participants2teams[2.0].id10
participants2teams[2.0].nameUS Ecomm Spanish Agents
participants2teams[2.1].id13
participants2teams[2.1].namePR Logistics English + Spanish
participants2teams[2.2].id14
participants2teams[2.2].namePR Logistics Spanish
participants2teams[2.3].id19
participants2teams[2.3].namePR Driver Gate Spanish Agents
participants2teams[2.4].id23
participants2teams[2.4].nameQA Testing Team - Chat
queue_priority_level--0
queued_at--2026-09-04T09:08:14.000-07:00
recording_permission--not_asked
recordings0call_id12175
recordings0duration137
recordings0id8949
recordings0recording_typevirtual_agent
recordings0started_at2026-09-04T09:05:54.000-07:00
selected_menu-deletedfalse
selected_menu-hiddenfalse
selected_menu-id8
selected_menu-menu_typeivr_menu
selected_menu-nameUS_ECOMM_General_CB
selected_menu-parent_id6
selected_menu-position1
session_type--Voice Inbound (IVR)
session_type_v2--Voice Inbound (IVR)
status--finished
support_number--+18153935508
updated_at--2026-09-04T09:10:37.000-07:00
verified--false
virtual_agent_handle_durations0call_duration137
virtual_agent_handle_durations0ended_at2026-09-04T09:08:10.000-07:00
virtual_agent_handle_durations0escalation_reasonby_virtual_agent
virtual_agent_handle_durations0fallback_response_count0
virtual_agent_handle_durations0finish_reasonescalated
virtual_agent_handle_durations0id7908
virtual_agent_handle_durations0initiated_byend_user
virtual_agent_handle_durations0langen
virtual_agent_handle_durations0menu_pathRouting Queues/Steering Menu...
virtual_agent_handle_durations0menu_path_id35
virtual_agent_handle_durations0response_count23
virtual_agent_handle_durations0started_at2026-09-04T09:05:53.000-07:00
virtual_agent_handle_durations0transferfalse
virtual_agent_handle_durations0virtual_agent.avatar_urlhttps://prod-ujet-server.prod.svc.cluster.local/assets2/default-virtual-agent-avatar-1.png
virtual_agent_handle_durations0virtual_agent.id12
virtual_agent_handle_durations0virtual_agent.nameQAT-Voice-Member-Self-Service
voicemail_reason--not_voicemail
voip_provider--deprecated
wait_duration--0

7. metadata → Webex CC

Source: p-640-lab-itmsc.ccaas_raw_lab.metadata (~7,278 rows, one per call).

Source columnTypeTarget fieldTransformNotes
idINT64TBDTBDTBD
call_uuidSTRINGTBDTBD2,507 nulls in POC data
langSTRINGTBDTBDTBD
call_type / session_type / session_type_v2STRINGTBDTBDTBD
statusSTRINGTBDlookupsee value maps
created_at / queued_at / assigned_at / connected_at / ends_at / updated_atTIMESTAMPTBDTBDtimezone / format TBD
wait_duration / call_duration / hold_durationINT64TBDTBDseconds; confirm Webex unit (ms?)
has_feedback / verified / is_out_ticket_accountBOOLTBDTBDTBD
out_ticket_id / out_ticket_urlSTRINGTBDTBDTBD
recording_url / recording_permissionSTRINGTBDTBDTBD
voicemail_reason / deflection / disconnected_by / fail_reasonSTRINGTBDTBDTBD
support_numberSTRINGTBDTBDTBD
selected_menu_id / selected_menu_name / selected_menu_typeINT64 / STRINGTBDTBDTBD
menu_path_name / menu_path_materialized_path / menu_path_items_countSTRING / INT64TBDTBDcandidate for Webex queue
queue_priority_levelINT64TBDTBDTBD
agent_info_id / agent_info_nameINT64 / STRINGTBDlookupneeds agent ID cross-walk
end_user_id / end_user_out_contact_idINT64 / STRINGTBDTBDTBD
offer_type / answer_typeSTRINGTBDTBDTBD
participants_count / transfers_count / escalations_count / recordings_countINT64TBDTBDTBD
participants_json / recordings_json / va_handle_durations_json / consumer_handle_durations_jsonSTRING (JSON)TBDexplodemay map to per-leg Webex activity rows
raw_jsonJSONnot mapped; retained for audit

8. session_data_feeds → Webex CC

Source: p-640-lab-itmsc.ccaas_raw_lab.session_data_feeds (one row per event block).

Source columnTypeTarget fieldTransformNotes
call_id / call_id_bodySTRINGTBDTBDjoin key back to metadata
file_lang / languageSTRINGTBDTBDTBD
event_typeSTRINGTBDlookup17 known types — see value maps
event_timeTIMESTAMPTBDTBDTBD
fail_reason / fail_detailsSTRINGTBDTBDTBD
menuSTRINGTBDTBDTBD
support_number / consumer_numberSTRINGTBDTBDPII — masking rule TBD
disconnected_bySTRINGTBDTBDTBD
situation / action / resolution / agentSTRINGTBDTBDfree text summary sections
crm_link / external_storage_link / gcs_urlSTRINGTBDTBDTBD
sentiment_scoreINT64TBDTBDscale / sign convention TBD
dp_queue_id / dp_order_number / dp_member_verified / dp_order_verified / dp_intent / dp_summary / dp_callid / dp_interaction_id / dp_channelSTRINGTBDTBDfrom dataParameters
data_parameters_jsonSTRING (JSON)TBDTBDoverflow / audit
source_file / bodySTRINGprovenance; not mapped
raw_jsonJSONnot mapped; retained for audit

9. ujet_session_summaries → Webex CC

Source: p-640-lab-itmsc.ccaas_raw_lab.ujet_session_summaries (~30 rows in POC).

Source columnTypeTarget fieldTransformNotes
idINT64TBDTBDjoin key to metadata
type / menu_type / menu_pathSTRINGTBDTBDTBD
ended_at / finished_atTIMESTAMPTBDTBDTBD
session_summarySTRINGTBDTBDfree text
summary_situation / summary_action / summary_resolution / summary_agentSTRINGTBDTBDparsed summary sections
summary_sections_countINT64TBDTBDTBD
session_summary_sections_jsonSTRING (JSON)TBDTBDoverflow / audit
raw_jsonJSONnot mapped; retained for audit

Reference: value / enum maps

metadata.status → Webex CC

BigQuery valueWebex CC valueNotes
TBDTBDTBD

session_data_feeds.event_type → Webex CC activity / event

BigQuery event_typeWebex CC targetNotes
Call startedTBDTBD
Call endedTBDTBD
Call failedTBDTBD
Chat startedTBDTBD
Chat endedTBDTBD
DispositionsTBDTBD
Segment sentiment scoreTBDTBD
Session sentiment scoreTBDTBD
Customer rating receivedTBDTBD
Customer email collectedTBDTBD
Agent Assist auto-generated SummaryTBDTBD
Session summary uploadedTBDTBD
CCAI Insight call recording uploadedTBDTBD
CCAI Insight chat history uploadedTBDTBD
Text attachment uploadedTBDTBD
Custom data from the customer has arrivedTBDTBD
SIP Data ReceivedTBDTBD

Reference: transform rules

RuleDefinition
directCopy value unchanged.
castChange type only (e.g. TIMESTAMP → ISO-8601 string). TBD target formats.
lookupReplace via a value map in value / enum maps.
concatJoin multiple source columns. TBD.
deriveComputed (e.g. duration = ends_at - connected_at). TBD.
explodeExpand a JSON array into multiple Webex rows. TBD grain.
TimezoneTBD — BigQuery timestamps are UTC; confirm Webex expectation.
Duration unitTBD — source is seconds; confirm Webex unit.
PII handlingTBD — phone numbers, emails, CRM links.

Open questions

  1. Which Webex CC surface is the target — Provisioning API, a data import, or the Analyzer / Reporting model?
  2. Is this a one-way load, or reconciliation between CCAI data and Webex CC records?
  3. What is the join key between CCAI call_uuid / id and a Webex CC contact / session ID?
  4. Target grain: one row per contact, per session, or per activity leg?
  5. Agent ID cross-walk: how do UJET agent_info_id values map to Webex CC agent IDs?
  6. Queue model: does menu_path_* map to a Webex CC queue, entry point, or something else?
  7. Required vs optional Webex CC fields with no CCAI source — defaults?
  8. Timestamp format, timezone, and duration units expected by the target.

Log: Queue name verification notes

Cross-system queue-name verification trail — matching the same interaction across Cisco, CCAI, BigQuery, and Salesforce, plus a false-positive dead end that came up while doing it.

The verification chain

Confirming Cisco’s “US Membership” queue is the same queue as CCAI’s US_MS_General_Chat, by tracing one real interaction across all four systems:

SystemFieldValue
Google Cloud (BigQuery, QAT env)selected_menu“Routing Queues/ECOMM General/US_ECOMM_General_CB”
CCAI (Contact Center AI platform)Queue NameRouting Queues/Membership/US_MS_General_Chat – Cascade – Group 1
(CCAI queue name: US_MS_General_Chat; aka Cisco “US Membership”)
CCAIChat ID / AgentChat-4018, agent Bibiam Martinez
Salesforce (UJET Session History)Chat ID6,104 (UJET-14455)
Cisco (Excel export, 07/14/2026)PQ NameUS Membership (aka CCAI US_MS_General_Chat)

Dead end: US_EN_CTWS_PCS

A keyword search of the Cisco Excel export for “US Membership” / Bibiam Martinez returned one match — but it was the wrong record, matched only because the literal text “US Membership” happened to appear in that row’s Hour column, not the actual queue field.

FieldValue
Unique IDDaily_Agent_29_20260714-0700_CTWS_5254_51762
PeripheralNumber99148427
Agent ID51762
LOBCTWS
Date2026-07-14
PQ ID / Name5254 / US_EN_CTWS_PCS
Team NameALORICA_FtMyer_Team22
AgentAns_Butt (Agent ID: 51762) — not Bibiam Martinez ❌
Hour column text“US Membership” (coincidental string match only)

Conclusion: US_EN_CTWS_PCS is an unrelated CTWS-LOB queue and is not part of the Membership/Chat mapping — the agent mismatch (Ans_Butt vs. Bibiam Martinez) confirms it’s a false positive from a loose keyword search, not a real cross-system match. Search should filter on the PQ Name column specifically, not scan every column for the queue-name text.

Confirmed Cisco ↔ CCAI queue-name mapping (reference table)

Cisco queue nameCCAI queue name
NEWUS_MS_Verification
NEWUS_MS_VerificationTransfer
US_MS_Transfer, US_MS_PriorityUS_MS_Transfer
US_MS4US_MS_Supervisor
NEWUS_MS_General_CB
US_MSUS_MS_General
US MembershipUS_MS_General_Chat
US_MS_PrivacyUS_MS_Privacy
NEWUS_ECOMM_VolumeSales
US_Ecomm_Offline_SupportUS_ECOMM_Offline Supervisors
US_ECOMM_SupportUS_ECOMM_Supervisor
NEWUS_ECOMM_General_CB
US_ECOMM1US_ECOMM_General
US_ECOMM1_Transfer, US_ECOMM1_PriorityUS_ECOMM_Transfer
US_ECOMM5_NHUS_ECOMM_NewHire
US_ES_ECUS_ECOMM_General_ES
NEWUS_ECOMM_General_CB_ES
LGST_3PL_DRIVERUS_LGST_DriverGate
LGST_COSTCO_EN_PRPR_LGST_General
LGST_COSTCO_ES_PRPR_LGST_General_ES
LGST_COSTCO_USUS_LGST_General
NEWUS_LGST_General_CB
LGST_DRV_GT_EN_PRPR_LGST_DriverGate
LGST_DRV_GT_ES_PRPR_LGST_DriverGate_ES
LGST_HIGH_RISK_CLAIMSUS_LGST_HighRiskClaims
US_Nesting_SMEUS_ECOMM_Nesting
US EcommerceUS_ECOMM_General_Chat
US_BDUS_BD_General
US_BD_General_Chat
US_BD_Transfer_Chat
US_ECOMM_Transfer_Chat
US_MS_Transfer_Chat
OPST - Cancel/FraudInternal_OPST_Chat
Logistics Damage ClaimsInternal_CL_Claims_Chat
Support Line ChatInternal_Ecomm_SupportLine_Chat
T2 SOKInternal_T2_SOK_Chat
UPS/FedEx GroceryInternal_T2_Redirect_Chat
Costco LogisticsInternal_T2_Logistics_Chat
Orlando ManagementInternal_Logistics_SupportLine_Chat
Yakima SME ChatInternal_SME_Chat
Ecom T2 Sup ChatInternal_Ecomm_T2_SupportLine_Chat
NEWInternal_MS_SupportLine_Chat
NEWInternal_MS_Verification_Chat

Source: user’s personal “Queue Name verification 2” notes, cross-referencing Google Cloud/BigQuery (QAT env), CXinsights, CCAI, Salesforce, and a Cisco Excel export dated 07/14/2026. “NEW” rows have no confirmed Cisco-side name yet.