Skip to content

v0.6.1

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 14 Oct 01:55

Release: v0.6.1

Release Date: 2026-10-10

⚠️ Breaking Changes:

  • Points Lost Map of earlier Scoring results: the map now colours the map areas of every country, so results calculated before this version show their cities as bubbles until they are calculated again.
  • Non-Qualified Calls identity: each call is identified by its NetCheck JOIN_ID (the same in the Daily and Final CDRs; without one, as before) and Speech CDRs are listed once per call instead of once per sample. The follow-up of the indexed calls moves to their new identity once, the first time a workspace is opened, and each Speech sample keeps its own; NQ Call Tracking packages exported by earlier versions only match the calls without a JOIN_ID.
  • PowerPoint template: the PowerPoint master of every report and export is assets/powerpoint-templates/Template_01.pptx (formerly assets/ppt-templates/Template_CDR_analysis.pptx); deployments with their own APP_ASSETS_DIR must move it there.
  • PPT naming: E2E Dashboards is now PPT Dashboards (/ppt-dashboards, /api/ppt-dashboards) with its PPT Manage Dashboards panel, Reporting (old) is now PPT Reporting (old) (/ppt-reporting-old, /api/ppt-reporting-old), and Report Templates Management in Workspace Config is now PPT Templates Management, whose editor (PPT Templates Editor) the Edit PPT Template buttons of Reporting, PPT Dashboards and PPT Reporting (old) open; bookmarks to the former pages no longer work. Import / Export / Transfer and the backups call them PPT Templates too, and their export is named <workspace>_ppt-templates_<date>.zip like the other workspace exports; PPT Templates packages exported by earlier versions must be exported again, and a transfer that includes them needs this version on both servers. The saved Dashboards of every workspace, the Features Activation rules and the Interface Settings of both modules are renamed when the application starts or a restored or transferred workspace is opened.
  • Query Builder Queries without CDRs: exported, transferred and backed-up Query Builder Queries carry their name, description and SQL without CDRs, which are chosen when an imported query is used (loading it keeps the CDRs chosen in the panels); the CDRs named by packages of earlier versions are left out, so importing them no longer fails when a CDR is missing in the destination.
  • NQ Analysis Center: the Non-Qualified Calls Excel export starts with JOIN_ID, the Call Key and the CDR, has two header rows (section and field) and the fields grouped by section, and ends with Updated At instead of the Call Key; the root causes are chosen as a Root Category and a Root Cause of the Root Cause Catalog (the domain follows them); the first default statuses and teams are replaced by those of the meeting workbook while unchanged (Under Investigation → Under Analysis, Pending Information → Open, Resolved and Not Applicable → Closed), and the statuses chosen before stay set by hand. NQ Call Tracking packages of earlier versions are still imported.
  • Scoring Jobs are Saved Filters: the Scoring Jobs of Scoring & GAP Analysis are now Saved Filters (/api/scoring/saved-filters, /scoring/saved-filters/<id>/export/<kind>, table Scoring Saved Filters, formerly /api/scoring/jobs, /scoring/jobs/<id>/export/<kind> and Scoring And GAP Analysis Jobs): the jobs of each workspace become Saved Filters once, the first time it is opened, those of the same selection joined with their latest result. Processing CDRs no longer calculates a default Operator scoring on its own.

🌟 New Features:

  • Map Areas: Workspace Config finds the countries of the tests of the CDRs and downloads the administrative areas of each one from geoBoundaries (with the suggested level and the licence of each level, for example municipalities in Spain or counties in the USA) or imports them from a GeoJSON or Shapefile, and the Points Lost Map colours them. The application also ships, for servers without Internet access, the ITL3 areas of the United Kingdom and the areas of Germany, France, Italy, Spain, Poland, Romania, the Netherlands, Portugal, Switzerland, the United States, Canada, Mexico, Japan, South Korea and India at the level closest in size to them (assets/map-areas, with the world country polygons), which a workspace can replace with its own; any other country is coloured as one area, the whole country. Repeated names take the name of their region and broken accents are repaired. They are stored in the Map Area Layers table and travel with the Mappings & Reference Data in Import / Export, transfers and backups. Each CDR keeps the map area of each test and its country (Map_Area, Map_Area_Country), placed in the background while the application is idle (and again after the Map Areas change), so the Points Lost Maps do not place the tests each time.
  • Final, Weekly and Daily CDRs: every CDR is a Final CDR (delivered after its campaign) or a Weekly or Daily CDR (incremental or cumulative, received every week or day while the campaign runs), proposed from the file name on upload (a name with Final, or with a date range, is Final; a weekly word is Weekly; a daily word or a single date after the start of the name is Daily) and changeable in the Workspace without reprocessing. The CDR selectors of Scoring & GAP Analysis, Network Insights and PPT Dashboards highlight the Weekly and Daily CDRs as the upload does. The combined CDR tables, and with them PPT Dashboards, Network Insights, Scoring & GAP Analysis and Reporting, include the Final CDRs and the Weekly and Daily CDRs until an included Final CDR of their type and NR Mode covers their campaign; a cumulative Weekly or Daily CDR replaces the previous ones it contains in the combined tables (they stay in the Workspace), each CDR can be included or excluded by hand (In Combined?: Auto, Yes or No, with whether it is included and the reason) and every change, including deleting a CDR, updates the combined tables in a background job shown in CDR Tables Updates. The CDR Type and Combined choice travel with the datasets in packages, transfers and backups; earlier CDRs are Final CDRs.
  • NQ Analysis Center: Non-Qualified Calls follows each call through six sections — General, RCA, Failure Details, Analysis, Implementation and Planning — shown as the Activity, RCA, Failure Details, Analysis, Implementation & Planning (two subpanels) and Call Details tabs of the call, each in its colour and counting the fields filled in, with a customizable field catalog (by default the 37 fields of the meeting workbook, in its order but with the NetCheck RCA before the Ericsson RCA, with the Ericsson RCA Initial Category, Initial Subcategory and Evidence and the Last Cell ID and Failure Comment of the CDR (the fields of the NetCheck RCA and of the Ericsson RCA named after their source), and those of the analyses of the previous tool: Priority (P1 to P5), shown after the NQ Call Status in the header of the call, Analyst and Reviewer beside the Asignee, Unique ID, Initial Root Category and Cause, Polygon Area, Vendor 1 and Vendor 2 when Failure, Description, Implementation Team and Planned FY) whose fields are entered by the analysts (lists chosen from coloured pickers, which also add a new value typed in their search, text, long text, number, date and Yes / No, optionally proposed from a CDR value; the Planned FY takes fiscal years only, a year being written FY27), show the follow-up, come from the CDR or from the Ericsson RCA, or are derived from the call by keywords (Session Type); every field can be a table column (every column of the table headed by the colour of its group, as in the Excel export; the Analysis Status and Implementation Status by default, the NetCheck RCA and Ericsson RCA Suggested Cause not), a Summary breakdown, required to close and exported to Excel in the catalog order. Fields & Sections edits the sections and fields, and Export Catalog / Import Catalog exchange the whole catalog (sections, fields, lists, root cause catalog, statuses, teams and Status Rules) as an editable workbook, also reading the field list of the meeting workbook. The Root Cause Catalog groups the Root Categories and Root Causes of the analysts under technical domains with keywords: each cause can be mapped to its root category (which a call without root category takes when the cause is chosen, and whose causes its lists show first), each category and cause takes its domain by hand or automatically (a cause from its category, else from the keywords of the domains), and its Mapping tab maps them all in one table and gives the calls with a root cause and no root category the category of their cause (Apply to Calls); Ericsson RCA Results imports the results of the Ericsson RCA by JOIN_ID (CSV or Excel, with preview and template), also the RCA_Summary.csv of its Auto RCA output (its initial category and subcategory in the new Ericsson RCA Initial Category and Ericsson RCA Initial Subcategory fields and the final ones as the suggestion, the A and B sides, the evidence in the new Ericsson RCA Evidence field and every measurement, the rows of a JOIN_ID combined), and can add the Ericsson RCA values missing from the Root Cause Catalog, and every call gets a recommended Root Category and Cause merged from the NetCheck RCA (first), the Ericsson RCA, its comments and previous decisions, with its confidence and the RCA it comes from, to accept per call or in bulk. The NQ Call Status follows customizable Status Rules on the phase fields until it is set by hand — an attended call is open, Under Analysis, Under Implementation or Under Planning (Open, in the pipeline and its indicator, being their sum), until it is closed, and the default rules go from the end of the pipeline to its start — (↺ Back to automatic returns it; Default Rules marks the default rules whose status no longer exists to choose it, and Default Statuses / Default Teams put back only the default statuses and teams; a status only set by the rules no longer blocks its removal), the header of each call shows its JOIN_ID with a copy button, the previous and next call of the list and a field to go to the call of a JOIN_ID, and its phases in a subpanel of their own, one card per phase from RCA Identification to Planning, and choosing an assignee brings the call to their team. A dark floating bar above the Filters, with the Analysis Center menu beside it, shows the NQ Calls table, one panel at a time (Summary, NQ Rate, RCA Sources, Root Causes, Lifecycle and Progress, each opened at the top of the page, with the number of calls that match the filters below the Collapse button of every panel) or All panels (every panel, the Filters too, with the active filters as removable chips at its top, followed by the calls table with ten calls a page), and the Lifecycle & Phases (status pipeline with the clickable rules of each status, RCA identification, phases in one row with the shares of the calls with a value unless Show Empty Status is checked (also in the PowerPoint, Word and Reporting artifact), the rules of the pipeline cards on one line, time in status, moves and stalled calls) and Root Cause Sources (coverage and agreement of the three sources, the root domains, catalog categories and own hierarchy of each one, with the root domain of each category in a tag, and the RCA → Selected matrix) panels join the page, the PowerPoint, Word and Reporting artifact; the Root Cause Analysis panel counts, each in its tab, the root domains, categories (with their technology, such as Poor Coverage LTE or NR) and causes of the NetCheck RCA, of the Ericsson RCA or of the Analysts mapped onto the catalog, shows the Root Domains by Call Type (Classic, WhatsApp and Data) and NSA vs SA as donuts under one legend with the calls on their slices and the Root Domains by Technology as bars, in the colours of the domains, without the Not classified calls unless Show Not classified is checked (also in the PowerPoint, Word and Reporting artifact), and filters the calls of that source; the PowerPoint, Word and Reporting artifact show the Root Cause Sources and then the Root Cause Analysis of each source with its charts drawn like the page, the source in bold in their titles and what each one shows in its subtitle (the call type and NSA vs SA donuts, the Root Domains by Technology, and the eNB / gNB with Most Non-Qualified Calls that fit), followed by the Lifecycle & Phases as the page shows them (the pipeline with the Open frame and the rules of each status, the phases in one row, the time in each status and moves, and the stalled calls) and the Progress View (its period in bold in the titles, such as Progress View · Monthly, and what each slide shows in its subtitle). The Excel export starts with JOIN_ID, the Call Key and the CDR (its Speech Samples, Comments and History sheets also start with the JOIN_ID of each call and keep the rows of each call together, by date), then has every field under its section, with two header rows coloured like the meeting workbook, the status of each block in a darker shade, the root cause decision at the end of the RCA block, the comments of each call in one cell and the time of its last update. The catalog, Status Rules and RCA results are stored in the NQ Analysis Fields, NQ Root Catalog and NQ RCA Results tables and the workspace settings, and travel with the NQ Call Tracking; the new NQ Calls Configuration component of Import/Export, transfers and backups carries only the configuration (sections, fields, statuses, teams, Status Rules, root cause catalog and table columns), without RCA results or follow-up.
  • NQ Rate by Campaign and Operator: a management panel of Non-Qualified Calls shows, per service, how many of every call of each campaign and operator are Non-Qualified, as cards per operator (named in its Operator Maps colour) and a pastel heat map from mint to rose whose cells drill down into the calls, counting each call once in its most recent CDR and recalculated only when its own filters or the indexed CDRs change; the PowerPoint and Word exports and the Reporting artifact show it as one table with every service and All services under each operator and the overall NQ rate above it, on one slide (two, each with half of the operators or campaigns, when they are many), and its calls are stored in the NQ Call Population table.
  • Vendor polygons: the new Vendors — Geospatial datasets give the Vendor of each area for any Operator, by an Operator attribute or by the Operator chosen on upload (proposed from the file name and changeable in the Geographic Datasets card). Mapping, on upload or in the Map dialog, uses the Network Inventory or the Vendor polygons (the dialog asks when the workspace has both, and its rule follows the choice): each sample takes the polygon of its Operator at its start and end positions with the Network Inventory rule, <Operator>_Unknown (Vendor Unknown) outside every polygon, and <Operator> - All for Operators without polygons. Region Mapping datasets are now Regions — Geospatial.
  • Network Inventories of any Operator: the new Network Inventory type stores the cell inventory of any Operator, whatever its layout, with its Operator (proposed from the file name and changeable in the Network Inventory & Vendor Mappings card); with a Vendor column and a cell identifier (a global cell ID, or eNodeB/gNodeB ID with local cell ID) it also maps the Vendor of its Operator's CDR samples with the first and last cell rule, on upload and in the Map dialog. The Vendor Mapping & Cell Inventory card is now Network Inventory & Vendor Mappings.
  • Operators and Vendors found in the CDRs: the Operator Maps and Vendor Maps of Workspace Config have two numbered, collapsible subpanels: names found in the CDRs lists every name of the ready CDRs with its CDRs, label and status (Unassigned, Assigned or Merges N), and each name gets its label from a list of the labels or a + New label…, so names are added up as one only when they are given the same label; labels sets the order and colour of each label and shows its possible names in the CDRs of the different campaigns as chips (highlighted with their CDRs when the current CDRs have them and ordered from the name in most CDRs), which are added, removed or moved from another label in place; their CDRs show on hover and stay in a floating panel on click. Saving asks for confirmation when a label would add up names of the CDRs, when a name leaves a label used by saved filters or Reporting Jobs (with how many use it) and when a new label contains _. The Campaign Maps preview tells the same status of each campaign and adds an exception for an unassigned one in one click. While some name or campaign is unassigned, a red card on every page lists them, with buttons to the matching map for the roles that edit Workspace Config and a request to inform an administrator for the others.
  • Reset Application: super-admins have a Reset Application button in the Administrator Config header that, after a confirmation listing what is deleted and typing RESET APPLICATION, stops background work, deletes every workspace, database and the whole config and data folders (backups inside them included) and starts again as a new deployment with the default accounts, ending every session.
  • Starter content for every workspace: new workspaces, and existing ones once, start with the content shipped in assets that they do not have yet: the NetCheck 2026 Scoring methodology (assets/scoring-methodologies), the NetCheck CDR Report (NSA and SA) and RF Quality (RSRP & SINR) (NSA) Report Templates (assets/ppt-templates) and Dashboards (assets/ppt-dashboards), and the Auto-calculated Fields they use (Call_Family, Test_Family, Test_Result_Group, RAT_Group, which replace the former default fields; assets/autocalculated-fields/default-autocalculated-fields.json, formerly assets/default-calculated-dimensions.json), the Scoring report configurations National, National & Main Cities and National per Vendor (assets/scoring-report-configurations), six Query Builder queries (assets/query-builder-queries) and the disabled Reporting Job Weekly NetCheck Report (assets/reporting-jobs), all without Operator or Vendor filters so they fit any market; a new workspace takes its Vendor Maps from assets/labels-vendors/default-vendor-maps.json, and the default Campaign Maps (label format, order of the radio modes and exceptions) come from assets/labels-campaigns/default-campaign-map.json.
  • Country of a workspace: creating a workspace asks for its country among the 50 main countries, and the workspace starts with the Operator Maps of that country's mobile operators in their corporate colours and with the ways the CDRs write them (assets/labels-operators/operators-by-country.json); without a country it starts without Operator Maps (formerly every new workspace started with the operators of the United Kingdom). The workspaces table changes the country of a workspace, which adds the operators its Operator Maps do not have yet.
  • NetCheck 2026-Q3 methodology: a new Scoring methodology for the Q3 2026 campaigns, where NetCheck adds TikTok to Video Streaming: the 20 % of Video Streaming is divided between YouTube (13 %) and TikTok (7 %), with YouTube and TikTok success ratio, TTFP >= 10 s and irritating experience KPIs filtered by Test_Name, in both the Best Network and Most Reliable scorings. It is shipped beside NetCheck 2026, and a methodology shipped later reaches every existing workspace once.
  • National & Areas scoring slide: Include National & area summary, in a new panel of each Scoring report scenario (included by default for the whole country; including it clears and disables the Region, Cluster, City and Main Cities filters), adds to each scoring a slide with the National scoring next to chosen cities (London by default, others or the Main Cities) and each Region, Cluster or City of its breakdown (Region by default): each operator's score, its GAP to the reference and its change from the previous campaign or period, with a trend chart per area. Its Time split aggregates all the selected CDRs into one value or splits by campaign or by the Daily, Weekly, Monthly, Quarterly or Yearly period of the start time of each test, whatever the CDRs are. The Calculation panel of Scoring & GAP Analysis has the same panel, saved with the calculation selection, the results show, below the Scoring Trend, the National & Areas table and charts (as tall as the table beside them, with their campaign or period labels tilted when they do not fit, and titled in one colour for National, another for the separate cities and another for the breakdown; the table and each chart enlarged alone with a double click; a single separate city charted next to National, several after the breakdown; an area not measured in the latest campaign listed without a score, with its earlier campaigns in its chart) and the Saved Filters cards show its time split, breakdown and separate cities. Each area is scored with its own measurements in the same calculation, which reads the CDRs once; the summary is saved with the report configurations.
  • About: the last entry of the Help menu shows the credits of the application: its logo, name, version, release date and author.
  • Scoring History: the workspace keeps the components of every scoring KPI of every CDR per day, campaign, operator, vendor, environment, Region, Cluster and City, filled in the background after the other work as soon as a CDR is processed, when the workspace is opened and when the server is idle, and identified by the SHA-256 of each CDR file and its processing (renames keep it, a deleted CDR keeps its history, Daily, Weekly and Final stages are recorded). Calculations whose split and filters it covers are done from it in seconds instead of minutes (the others say in their progress why they read the CDR rows, such as the CDRs still being indexed), with the same results (medians and 90th percentiles within a quarter of a percent); their Points Lost Map follows from the CDR rows (reading only what the map needs) in a job of its own, shown among the background tasks, after the calculations waiting; the Saved Filter being looked at goes first in the queue. Its tables are listed in Database Management.
  • Saved Filters: every selection calculated in Scoring & GAP Analysis (CDRs, NR Mode, filters, Split by, GAP reference, methodology and National & area summary) becomes a Saved Filter, kept when it is marked with the star (an unstarred one goes when the user calculates or opens another), reused when the same selection is calculated again, and its result is saved until its CDRs, methodology or Operator Maps change, when opening it calculates it again (from the Scoring History, usually in a moment); without its CDRs or methodology the saved result is shown as it was. Each card can be named and starred (at the top), tells on one line how many times it was used (calculated or opened) and calculated, offers Use newer CDRs when a Final CDR (or a newer cumulative one) replaces one of its CDRs, and the Saved Filters travel without their results with the Scoring Configuration in Import / Export, transfers and backups, finding their CDRs by the SHA-256 of their files.
  • Methodologies by campaign: each Scoring methodology can apply to some campaigns (Applies to campaigns, from one quarter of the workspace's campaigns to another, either end open, without overlapping those of another methodology, saved by Save Methodology and kept in exports, transfers and backups), and Scoring & GAP Analysis calculates By campaign by default, scoring each campaign with the methodology that applies to it (the default one otherwise, so with a single methodology every campaign uses it), so campaigns before and after NetCheck added TikTok are compared with their own rules.
  • Access requests: Request Access on the login page creates the user of an Ericsson signum (7 letters starting with E, stored in capitals; sign-in ignores the case) inactive, as a user-editor in the user groups of the chosen workspaces (such as DE or UK) and in the chosen module access group, then opens an email that asks the administrator to activate it in Admin › Users (whose Groups column now follows the role); for a signum that already has a user the dialog warns of it and, with its current password, the request replaces its workspace and module groups and deactivates it until the administrator activates it again. Module access is managed by group: every deployment gets once the NQ Calls (Workspace and Non-Qualified Calls), Benchmarking (every main module except Non-Qualified Calls) and All Modules groups with their Features Activation rules.
  • Import Ericsson RCA Results and Import Previous NQ Analyses: the Analysis Center menu of Non-Qualified Calls (also a submenu of the sections menu of its tab, with every option of the Analysis Center) ends with the imports of root causes: Import Ericsson RCA Results and, for admins and super-admins, Import Previous NQ Analyses, which imports the analyses made with the previous tool into the calls of the workspace without losing anything: every visible sheet of a CSV or Excel workbook with a JOIN_ID column (several JOIN_IDs in a cell share the analysis, and a row without one is its call by the Operator, Campaign and session of its CDR), its columns named as in the Analysis Center or as in the analysis workbooks of the previous tool (also the Excel export of Non-Qualified Calls), each comment column as a comment of its own and everything without a field (other columns, values of other rows, values that are not values of their field or that the call keeps) in an import note of the call, but for the copies of what the CDR or the Ericsson RCA of the call already says; the changes, comments and note of each call take the date of its analysis (Date last modification, else the date of the call a week later). The import translates the values (MOC and MTC by the direction of the call, years and quarters as fiscal years in Planned FY (2030 is FY30), two vendors in Vendor 1 and Vendor 2, Planned and Not Planned of the implementation columns in the Planned Status, Closed and Invalidated as Implemented and Not Applicable, No_Vendor_B and No_JoinID Missing of the Analysis Status as Invalidated, the new list values, teams, root categories and causes, and the domain each root category or cause takes in the catalog) with the equivalences of the workbooks of the previous tool built in, so no workspace needs to upload them; an Equivalences workbook, whose cells list the values they take, shows them (or every value of a file) and changes them for a workspace, which keeps its changes for the next imports and in its configuration. The analyses of calls not loaded yet wait for their CDR; a preview shows everything before importing, with a template and the choice of filling only the empty values or replacing them (confirmed in the application's dialog), a progress panel shows each step, Import completed sums up where the calls went and what they got, and importing a file again adds nothing.

🚀 Enhancements:

  • Scoring report editor: with several scenarios, the settings whose value differs between them (filters, aggregation levels, scorings, environments and chart, table and GAP options) are highlighted in amber in every scenario, and the highlights follow each change.
  • Renamed Operators and Vendors in saved filters: renaming a canonical Operator or Vendor in the Operator Maps or Vendor Maps also renames it, besides Report Templates and Dashboards, in the Operator, Operator_Vendor, Vendor_Operator and Vendor filters of Reporting Jobs (GAP reference operator and Scoring report scenarios included), saved Scoring report configurations, the last Scoring calculation, the CDR Analysis filters and the Non-Qualified Calls filters.
  • Job Editor Close button: the Job Editor closes with a red Close button with an exit icon instead of a round ×.
  • Module tab labels on phones: phones and other small screens (up to 760 px wide) never show the module labels (ALPHA, BETA, NEW…) on the tabs.
  • Points Lost Map: each map is headed by its operator in large type (web, PowerPoint and Word); maps and rankings are also shown for each environment, and the All Environments ranking names the environments of each area; the map areas are coloured, as chosen in Colour areas by, by the points of the city or route that loses most among those measured in them (default) or by the points lost in them by the city or route that loses most there; choosing rows of the ranking (click, Ctrl/⌘+click, Shift+click) dims the other areas and centres the map on theirs, and choosing areas on the map (a click, or Shift and a dragged rectangle) dims the rows measured elsewhere, while every area keeps its colour and changing Colour areas by keeps the choice; chosen rows share one colour. Side by side, the maps and rankings of every operator start at the same height even when one note is longer. The reference operator has its map and ranking too, and in the KPI GAP Profile its Gap to Maximum table (without the GAP to itself); a choice of operators saved before keeps the reference enabled. The PowerPoint and Word exports include them when the reference operator is one of the Operators to compare. The note above each map writes its points lost and the share of the listed rows in bold. Its location selector, shared with the KPI GAP Profile, lists the campaigns chronologically, in the order of the Campaign Maps, with the latest chosen by default.
  • Workspace Datasets in cards: the Datasets panel shows the Final, Weekly and Daily CDRs at full width (the Weekly and Daily cards fold and are shown only when there are CDRs of their type) with their CDR Type and In Combined? columns (one font size for every value, small NR Mode, CDR Type and Combined pills, and Rows over Columns and Uploaded over Updated, each with its own sort button, so the tables fit the window), the Network Inventory & Vendor Mappings, Geographic (with the Type of each shape and the editable Operator of Vendor polygons) and Other datasets in compact cards side by side, each with its count and its own sorting and only the Preview, Reprocess and Delete actions, and below them the combined CDR tables in their own card (Rows over Columns, without NR Mode, Size or Uploaded); every card has its icon and the times of the dates their own colour; the CDR rows have a light green background when the combined tables include them and a light grey one otherwise; the Dataset Type filter hides the cards without datasets of that type.
  • Non-Qualified Calls across CDRs: a call in several Daily, cumulative and Final CDRs is listed once with the data of its most recent CDR (the Final CDR first) and the same analysis in every CDR; choosing CDRs in the CDRs filter shows the calls of those CDRs with their versions there. A badge, the CDR Version filter and the NQ Call Versions table tell the calls changed between CDRs, with a newer version in another CDR, not in the Final CDR of their campaign or Completed in a newer CDR (listed only on request), and Call Details lists every CDR with the call. Each Speech call shows its number of Non-Qualified samples and the Speech Samples of its Call Details tab open each sample to follow it up on its own (also a sheet of the Excel export). **Calls table always shows Region over Cluster, between Operator / Vendor and City / Campaign; Columns, a button of the table, adds JOIN_ID, NR Mode, Cell ID, Direction, Session Type (CDR), End Time, the CDR, the fields of the Analysis Center and up to 12 CDR columns to it, each sorted and filtered from its header like the other columns (the filters of the new columns under Additional Columns Filters, after the Default Filters and the Analysis Center Filters), and up to 100 more CDR columns to the Excel export only; the Excel export also has Cluster, Operator_Vendor, Vendor_Operator, Session Type and the CDR columns. The Calls table shows the RCA columns before Root Category / Root Cause, Global Status and Team / Assignee before Comments and Session Type (CDR) before Test, fitting screens of 1440 px without scrolling sideways, its columns are reordered by dragging their headers (remembered by each browser per workspace, with Default column order to undo it), and a reload keeps the scroll position.
  • Defaults of a new deployment: Features Activation starts with every module active for all users, Non-Qualified Calls included, except PPT Reporting (old), off for every role and user (formerly allowed to super-admins and EJAITUR); Interface Settings start with the tab labels off and the stable modules (Workspace, CDR Analysis and PPT Dashboards) without label text instead of STABLE; the Operator Maps start with EE, 3, VF, VF SA, VF VoNR, O2 and Lebara and the Vendor Maps with Ericsson, Ericsson (Mixed), Huawei, Samsung, NSN, SCW, Mixed (non-Ericsson), Other Vendor and (blank), in that order and with new colours and CDR spellings (Mixed Vendor is no longer created; Mixed is a spelling of Mixed (non-Ericsson)). Settings already saved keep their values.
  • Polygons map preview: Preview of a Regions, Clusters or Vendors dataset draws its polygons on a map, each in its own colour and named on the map and in a legend, over the outline of their countries, with wheel zoom, drag to pan and double click to show them all again.
  • CDR Tables Updates: the Workspace card formerly called Materialization status lists every background job that rewrites the CDR tables by what it does (Auto-calculated Fields, Combined CDR-DATA/VOICE/SPEECH recreations, Combined CDR tables after a CDR Type, NR Mode, In Combined? or deletion change, and CDR tables reconciliation) and reads All CDR tables are up to date when idle, and refreshes the Datasets cards in place when a job starts or ends (the combined tables read Updating while they follow a change instead of Missing Rows); the Auto-calculated Fields panel shows the progress of its materialization with a link to the card and holds the Re-materialize All Fields button, next to Edit and Export.
  • Default timezone: without an Application Runtime timezone or TZ, timestamps use the server's own timezone instead of UTC (UTC when the server has none).
  • Interface Settings in Admin: the Interface Settings panel follows Features Activation instead of Import / Export / Transfer.
  • Scoring & GAP Analysis results in cards: each block of the Scoring Tables, Scoring Charts and GAP Analysis tabs (the Summary and Breakdown tables, each chart, the GAP tables, the KPI GAP Profile and the Points Lost Map) is a card whose top bar is a gradient of the colour of its tab; changing an operator or another result option keeps the card being looked at in place instead of jumping, and reloading the page returns to the same place once the maps are drawn. The Points Lost Map reads Operators: (each operator says that a click enables or disables it) and Maps per City, Region or Cluster, and its ranking names the environments in short in a Type column (City or Roads) per City and leaves them out per Region or Cluster, as its slides do.
  • Mixed Vendor labels: the vendor mapping rule names its mixed groups Ericsson (Mixed) (Ericsson at one end) and Mixed (non-Ericsson) (formerly Ericsson_Mixed and Non-Ericsson_Mixed), and the CDRs, Vendor Maps, templates, saved filters and queries of existing workspaces are renamed when they are opened. Mixed (non-Ericsson) comes last of all in Vendor filters and aggregations (after the <Operator> - All values) and last within each Operator in Operator_Vendor.
  • Changelog release navigation: the Releases list of the Changelog highlights the release being read, as Help Navigation highlights the open document, and the Help Navigation and Releases column grows down to the end of the document, scrolling only beyond it (formerly at the bottom of the window).
  • Server transfers in the background: the progress dialogs of a server transfer are wider, keep a phase such as importing workspace 1 of 1 — 90% on one line and have a Hide button on both servers and the transfer continues as a System task (on the destination also while it waits for the package). The source dialog comes back once when the destination starts importing, with Hide again, and can cancel the transfer at any stage; the destination follows the source while it creates and sends the package, shows the import's progress and, from the arrival of the package until the end of its import, a dialog without Hide on every open page that keeps the application out of use. Each server shows the other's reason when the other stops the transfer because of an error.
  • Failed Scoring calculations in App Logs: a Scoring & GAP Analysis calculation that fails writes a scoring_job_failed event with its error and where it happened.
  • File classification before uploading: each selected file is a card tinted by its detected type (Data, Voice, Speech, mappings, geographic datasets, Network Inventories), with an icon badge, its extension and size, rounded selectors in one row and its mappings grouped below, and a dashed outline and a Daily CDR flag in its corner when it is a Daily CDR; the panel shows how many files are being classified. Vendor source is offered only when the CDRs have both sources (Multivendor Mappings or Network Inventories, and Vendor polygons, in the workspace or in the same upload), proposing the Vendor polygons when they cover every Operator of the Network Inventory source (VFUK covers Vodafone, 3UK covers 3, each Network Inventory its Operator) and the Network Inventory otherwise; with one source that source is used, and mapping selectors without choices are no longer shown.
  • Background dataset uploads: the files of an upload are sent in chunks to the workspace where the upload started, and the upload continues after changing page, module or workspace (also after closing the browser, the next time the application is opened), from the bytes already received; it starts at once, and when the browser cannot keep the files (a batch over its storage quota) its card asks to keep the page open and leaving the page asks first. The mappings, polygons and inventories go first, and each file is processed in that workspace as soon as it is uploaded, while the next ones upload.
  • Parallel dataset processing: the datasets of a workspace are processed in parallel, up to Maximum simultaneous tasks (the CDRs of an upload still wait for its mappings), while its combined tables, Auto-calculated Fields and Scoring calculations run one at a time; the effective limit only reserves one logical CPU for interactive requests (formerly at most 4 tasks, and one dataset of a workspace at a time).
  • Split by: the Aggregation levels of Scoring & GAP Analysis (Calculation panel, job cards, report scenarios, Reporting Jobs and the covers of its PowerPoint and Word documents) are now called Split by, which tells what they do: split the results into separate scorings.
  • Rows Split and Columns Split: the Rows Aggregation and Column Aggregation columns of the PPT Templates are now called Rows Split and Columns Split in the PPT Templates Editor, the shipped templates and the template files; the templates of every workspace are converted when it is opened and template files with the former names are still read.
  • Query Builder CDR panels: the Source Datasets of Query Builder are chosen in a Data, a Voice and a Speech panel, as in the other modules, instead of one long list: each CDR shows its campaigns and NR Mode, Weekly and Daily CDRs are highlighted, and each panel has its count and Select All / None.
  • Campaign modes in the label: Show in label, next to NSA and SA in the Campaign Maps, chooses the modes that {mode} writes, so NSA campaigns can read 2026-Q3 while SA ones read 2026-Q3-SA without an exception per campaign.
  • Tab menus: hovering a tab opens the list of its sections, each with an icon and in the colour of the module (the panels of each module, Admin and App Logs, the Readme chapters, the latest Changelog releases, and the Help chapters grouped in General, Main Modules, Administrative Modules and Reference with the Readme and the Changelog), and Builders, Config and the User badge (with Change password) open their menus on hover; in Config and Builders each page lists its sections beside it, and Scoring Results lists its Scoring Charts, Scoring Tables and GAP Analysis tabs; on small screens the menus fit their content and list those sections below their page, indented. Choosing a section opens the page with that section at its top, unfolding it when it was folded, also when the page fills its panels afterwards or opens again with its saved selection (and the Scoring Results entries bring the results tabs to the top), and a reload then returns to where the page was being read, while clicking the tab or page itself opens it at its top.
  • Back to top: a round button at the bottom left, in the colour of the current module, appears once a page is scrolled down and takes it back to the top.
  • Campaign Comparison: three selectors choose the operator, the baseline campaign and the campaign compared with it (by default the previous and the latest), and the table spans the whole card.
  • Faster Scoring results: the GAP to the reference and the views of the results are built far faster (the Most Reliable scoring of a large job in a fraction of a second instead of most of a minute), and the results of completed jobs are kept compressed on the server, so opening a job again is immediate until it is recalculated or the Operator or Vendor Maps change.
  • Server transfers: a transfer rejected by the destination server says so before its reason (for example The destination server rejected the transfer request: …), so it is not taken for an error of this server, importing a selection of several packages names the one being imported (for example importing package 6 of 9 (Auto-calculated Fields)), and imported Auto-calculated Fields that differ from those of the workspace update its CDR tables as a background task once every package is imported, instead of holding the import until they are materialized.
  • Sign in on the documents: the Help, Readme and Changelog read without an account show Sign in as a large button in the brand colours, with an icon and a soft pulse, so it is not missed.
  • Non-Qualified Calls Reindex and Join ID: the calls are indexed as a background task (in the floating background tasks card): the first time the module opens and, for new, changed or removed CDRs, once the server has been idle for two minutes, so its pages never wait for the indexing; Refresh is now Reindex, which indexes the calls of every CDR again in the background (keeping their follow-up) even when no CDR has changed, the Calls panel is now called Non-Qualified Calls, and its new Join ID search, centred in the title bar of the panel, finds the calls with one or more typed or pasted JOIN_ID values.
  • Idle server: the requests that pages send on their own to refresh themselves (job progress, background tasks, transfers and the like) no longer count as use of the application, so the work kept for an idle server, such as the Dashboard chart warm-up and the Non-Qualified Calls indexing, is no longer held back by an open page.
  • Faster Non-Qualified Calls: a filter change of a large workspace answers in about a second instead of up to a minute: the latest version of every call is kept in the NQ Call Latest table (rebuilt in the background after each indexing or a change of the Operator and Vendor Maps) and read with the current follow-up, the calls of a choice of CDRs are read once per request, the root cause suggestions are matched once per combination of CDR values and found once for all the panels of a filter change, only the panels on screen are calculated, and the pages no longer wait for the indexing or for a CDR being processed.
  • Lighter page polling: every open page asks for the background tasks every 2 s only while work runs (every 8 s otherwise, every 30 s in a hidden tab) and for incoming transfers every 5 s (30 s hidden), so many users can keep pages open on one server.
  • Phones and small screens: no panel widens the page any more (wide content scrolls inside its own container), filters go two per row and action buttons are as wide as their text; the Reporting Jobs, their Run History and the Admin tables of user groups, workspace access, features activation and interface settings become cards like the CDRs, the workspace cards keep the Access picker on its own row, and every pager of the application (cards on phones, dataset previews, Query Builder results, Database Management, Non-Qualified Calls) shares one design of round arrow buttons in a white pill instead of emoji buttons. Non-Qualified Calls fits the phone: its calls are cards with the name of each value, shown one at a time with the same pager (which moves through the pages of calls by itself), the table header is a row of chips that sort and filter, the panel bar stays on one row, indicators and pipeline go two per row, the call details and the Analysis Center dialogs fill the screen, and the Scoring setup, PPT Dashboards cards and Workspace Config Main Cities fit too.
  • Split by Campaign by default: Scoring & GAP Analysis starts with Operator and Campaign checked in the Split by.
  • Progress periods: the Progress View of Non-Qualified Calls shows the calls per month by default, and the Progress Status of a new Non-Qualified Calls artifact of the Reporting Jobs per week.
  • Merge teams: in Statuses & Teams of Non-Qualified Calls, a team can be merged into another one (⤳ Merge into…): on Save its calls and members move to that team and it is removed.
  • Core and RF domains: the root cause domain Core 2G/4G/5G of Non-Qualified Calls is now Core, also in existing workspaces with their calls and filters, and RF, the most frequent root domain, is blue instead of red (unless a workspace chose another colour).

🐛 Bug fixes:

  • Job Editor drafts: reloading the Reporting page no longer reopens the unsaved values of a job that changed on the server since then (imported, transferred, saved from another browser or renamed in the Maps), which could show old filters such as an Operator with its former name; its saved version opens instead.
  • Scoring calculation notice: while the scoring of the selected CDRs and filters is calculating or recalculating, the yellow notice says so steadily instead of alternating with the number of selected CDRs each time the Saved Filters refresh, the Calculate Scoring and Recalculate buttons no longer flicker, and the results show an animated striped progress bar, Calculating Scoring…, in the colour of the result tab, with the progress and step of the calculation instead of alternating placeholder messages. The same bar, Loading Scoring Results…, shows while a saved result loads. The calculation also appears in the floating background tasks card with its elapsed time, and each card of the Saved Filters panel shows its calculation time (or the time elapsed while it runs).
  • Scoring calculation filters after an NR Mode change: changing the NR Mode or the CDRs no longer unchecks values of the context filters: a filter with every value checked keeps every value of the new CDRs checked, and a partial choice keeps the values that the new CDRs do not have, for when they come back.
  • Scoring report editor: the configuration of the last report is remembered as soon as Generate PowerPoint or Generate Word is pressed (formerly when the document was ready), and the selector shows the saved configuration whose scenarios are the ones shown, or when none has them; formerly it kept the name of the configuration the last report was chosen from, also when its scenarios were different (for example Operator saved as All but shown as 4/5 selected).
  • Points Lost Map with a single campaign: the web page and the PowerPoint and Word documents show the Points Lost Map of jobs aggregated by a level with a single value (for example Campaign with one campaign); formerly it was missing, without recalculating anything.
  • Mixed Vendor groups: with Mixed as a Vendor Maps spelling of the mixed group of no Vendor, the Vendor filters and values no longer show it behind another Vendor (such as Ericsson_Non-Ericsson_Mixed): a Vendor is mapped as a whole label.
  • Server transfer reception: opening or reloading an Admin page on the destination while it receives a package no longer deletes that package, which made the transfer fail with [Errno 2] No such file or directory once the package had arrived, and a retried transmission no longer shares its file with the interrupted one. An import that stops without recording its result is reported as failed instead of staying at Validating 0% until the source gives up after 24 hours.
  • Full Environment and workspace exports of old workspaces: exporting or transferring a workspace not opened since an update no longer fails with errors such as no such column: p.cdr_stage. Before the export or transfer starts, a dialog lists the selected workspaces whose database comes from an earlier version and offers to Convert and include them (their database is updated to the current version first, as opening them would) or Exclude them.
  • Operator colours of operators in some campaigns only: an operator measured only in some campaigns or scopes of a Scoring result (such as VF SA) takes its Operator Maps colour in the Points Lost Map (heading, note and operator button) and in the KPI GAP Profile slides of the PowerPoint and Word exports, as it already did in the other charts and tables; formerly they used the colours of the first score table only.
  • CDR Analysis filters: a filter applied with All values stays open, so values that appear later are selected too; Vendor_Operator shows the values chosen in it instead of none; Vendor stays in sync with Operator_Vendor and Vendor_Operator; and each CDR keeps its own filters when another CDR is opened and closed, as the browser no longer applies the filters of the last CDR by name to the next one (which could select nothing and lose the CDR's saved filters).
  • Workspace transfers without Input files: transferring a complete workspace or a Full Environment with the Input folder unchecked no longer fails with The transfer offer has incompatible content components; the destination accepts it, as it already did without the Output folder. A package without the Input or Output folder lists its files: when it replaces (transferred or imported) a workspace with the same name that already holds the same files, such as those sent by an earlier transfer, that workspace keeps its own folder, and with Output its history of generated files, which now travels in the workspace database; otherwise the folder is empty and a warning names the Input files, the Output files or both, in the destination's approval dialog, the source's progress dialog and the import's completion message.
  • Root cause in the call panel: the cause list of a Non-Qualified Call opens above its detail panel, so the cause can be changed there too (formerly it opened hidden behind the panel).
  • CDRs of imported Dashboards: Dashboards imported or transferred into another workspace choose the CDRs of that workspace with the same name and type instead of keeping the ids of the source workspace's CDRs, and a Dashboard leaves out chosen CDRs deleted from its workspace (with none left it uses the newest CDRs), so it no longer fails to open with "Selected data CDR was not found".
  • CDR Tables Updates of a new workspace: a workspace whose CDR tables were marked for an update that no job runs (such as a new workspace without CDRs) runs it instead of showing "Updating CDR tables · 0%" forever.
  • Deleting and creating workspaces: a new workspace no longer takes the id of a deleted one, which made the Workspace page show "Workspace deleted" and hide the new workspace when it was created shortly after deleting the last one; and the folder of a deleted workspace moves to a trash folder at once, so a new workspace with the same name created while the old files are removed keeps its own files and database.
  • Scoring of areas without an environment: in the National & Areas and the Scoring per location charts, an area or city with no measurements in an environment (London without Connecting Roads, for example) is scaled to the full maximum of the methodology, as the scoring calculation scales it, instead of showing only the points of its measured environments.
  • Clear history of a call: the Clear history button of the call panel is shown only for calls with a history (formerly it was shown for every call to admins and super-admins).
  • Zoom buttons on touch screens: a tap on a Scoring chart or map shows its floating zoom buttons, which stay a few seconds or until a tap elsewhere; formerly they only showed while the finger touched it.
  • Panels chosen in a module menu: a panel chosen in the sections menu of a module stays at the top of the page while the page loads its data, also when that takes longer than 15 seconds or the panels above it change size (until you scroll, for up to a minute), and Non-Qualified Calls always opens it in its view instead of returning to where the page was read last.
  • Numbers in Non-Qualified Calls: every number of the page reads in English, the language of the app, whatever the language of the browser: a comma between thousands, also in four-digit numbers, and a point before decimals (a browser in Spanish, for one, wrote 9999 and 11.516).
  • Confirmations over dialogs: a confirmation asked from an open dialog (such as deleting the Ericsson RCA results, Apply to Calls of the Root Cause Catalog or replacing the values on importing analyses) shows the application's confirmation above it instead of hiding behind it, and Escape closes only the confirmation.
  • Progress View with the Status Rules: the closures, reopenings, status changes and days to close of the Progress View of Non-Qualified Calls count the statuses the Status Rules set (as when importing analyses), not only those chosen by hand; the moves to a closed status are only the Closed column, and the days to close count from the call, as imported analyses follow a call up and close it at once.

📚 Documentation:

  • The Vendor mapping rule card of Workspace describes the current rule: every Vodafone and Three Operator is mapped (other spellings, such as Vodafone SA or VF_SA, keep their own name as prefix), Operators without a Vendor get <Operator> - All, and the result fills Operator_Vendor, Vendor and Vendor_Operator.