Complete listing of VIP v45 release notes (after v45.0, prior to v46.0) — written for both technical and non-technical staff.
On this page
- Overview
- What's New: Feature Highlights
- Release Nomenclature
- Release Reference Guide
- 45.0.1 / 45.1 Microreleases
- v45.0 GA Release (July 1, 2026)
- Modules: API (73), Core Module (NMS) (52), Portal (26), WebPhone (16), Endpoints Module (14), Authentication (SSO / 2FA) (3), CDR & Reporting (6), SNAPanalytics (Charts) (1), Node (5), SBus (2), Backup & Restore (1), Certificates & Apache (1)
Overview
⚠️ Ubuntu Support
Ubuntu 18 is no longer supported in NetSapiens platform version v45.0. Supported OS versions include Ubuntu 20, 22, and 24.
✨ What's New: Feature Highlights
A plain-language look at the 15 biggest new capabilities in v45 (grouped by area). For every fix and smaller improvement, see the full tables further down.
Recording & Compliance
Adds standards-based session recording (SIPREC), including an integration with Smarsh Call Recording and Analytics (formerly CallCabinet). This lets calls be recorded and analyzed by outside recording platforms your business may already use, with configurable, secure storage.
Older call detail records and event data can now be automatically moved from the database to lower-cost S3-compatible storage once they age out. Nothing changes for end users — the data stays fully accessible through the API for reporting and compliance, it just lives somewhere cheaper to store long-term.
Login & Security
Portal, WebPhone, and other apps now share the same login page, which then redirects you to the right place after signing in. Admins can also require Single Sign-On (SSO) and Two-Factor Authentication (2FA) at the system, domain, site, or individual user level.
Call Handling & Routing
A new “OnlyLocalAgent” queue option makes sure calls are only sent to agents registered on the same local server, which can help with performance in multi-site deployments. New reporting metrics track local queue wait times.
Automated call flows (WebResponder) can now play MP3 files directly, in addition to the formats already supported.
New tools let the system pass along and trust caller-identity information (Diversion Headers) when a call is forwarded or transferred between servers, so the original caller's details are preserved more reliably.
Fixes how call records are created when a call is transferred between geographically redundant servers, so each leg of the call gets its own accurate record instead of overwriting previous data.
Admins can now exclude specific test accounts from the “send everyone elsewhere” commands used during server maintenance, making it easier to safely test a server before putting it back into production.
Individual trunk connections can now use their own encryption settings for secure calls (SRTP), instead of being locked to one system-wide default.
Portal & Admin
Admins can generate a temporary, one-time password directly in the Portal to factory-reset or set up a phone. Previously this was only available in the more technical Endpoints Module.
The platform can now connect to the Crexendo Marketplace.
Custom data — like voice settings or scripts — can now be attached to API-driven calls and passed to services like Web Responder, enabling more tailored automated call experiences.
Added an API path for pulling iNSight analytics data directly, including ready-made queries and (for iNSight Pro users) more advanced options.
A new setting (SBUS_SEND_CONFIG_SRV_CODE) lets service codes replicate automatically between servers in a deployment when changes are made in the Admin UI.
WebPhone
WebPhone now supports SMS queues, so text conversations can be routed and handled the same way call queues are.
Release Nomenclature
Our forum announcements and webinars may refer to the following terms when discussing releases.
Alpha or beta release (also known as an early release): verified by the feature designer and technical leads, but completely untested by the NetSapiens QA team. To participate in early access testing, follow directions in the NetSapiens forum announcements.
GA release: tested by the NetSapiens QA team. Also contains bug fixes and improvements customers requested via the early access feedback form.
Releases themselves fall into one of three types:
|
Major Release e.g. v45.0 |
Significant fixes/improvements across many modules, such as library updates and schema changes. Version changes apply to all NS packages. |
|
Maintenance Release e.g. v45.4 |
Significant fixes/improvements across a few modules. Version changes apply to all NS packages. |
|
Microversion Release e.g. netsapiens-nms 45.3.3 |
Significant fixes/improvements specific to one module ("microrelease"). Version changes apply only to that module. |
Release Reference Guide
Read "What is Currently Supported?" for SNAPsolution versioning, including SNAPmobile, and tips for determining what is running in your system.
Downloads (last updated July 15, 2026)
📄 SNAPsolution v45 Release Notes_July 13_2026.csv
📊 SNAPsolution v45 Release Notes_July 13_2026.xlsx
Feature Announcements
A "feature showcase" highlights new features, improvements, and critical bug fixes for a major or maintenance release, and may include a recorded webinar.
v45 Feature Showcase covers the 45.0.0 release. Early Access released October 28, 2025; GA released July 1, 2026.
Self Upgrade / Downgrade
Self-upgrade info is consolidated into two articles for a logical, uninterrupted upgrade experience:
- v45 Alpha/Beta Self Upgrade Manual — how to self-upgrade from v44.x to v45-alpha, plus troubleshooting & downgrading.
- v45 GA Self Upgrade Manual — how to self-upgrade from v44.x to v45.0 GA, plus troubleshooting & downgrading.
Note: Fixes and improvements committed in v44.5 were not included in v45.0.0 — they are now available starting in 45.0.1. See the v44 SNAPsolution Release Notes for details on what shipped in v44.5.
Listed in reverse date order below — the latest build of each component is listed first.
45.0.1 / 45.1 Microreleases
Smaller, module-specific patches released shortly after v45.0.
netsapiens-charts-app 45.0.1 — SNAPanalytics (Charts)
| Ticket | Type | What changed |
|---|---|---|
| CHRT-665 | Bug | Fixed a v45 regression issue that caused the SNAPanalytics page to fail to load correctly for users with the Call Center Supervisor role. Access and page rendering now function as expected for affected users. |
netsapiens-ndp 45.0.1 — Endpoints Module
| Ticket | Type | What changed |
|---|---|---|
| NDP-1064 | Bug | Resolved an issue preventing users from updating the SIPbx server assigned on analog gateways. |
| NDP-1466 | Improvement | Enhanced Grandstream HT V2 device provisioning to support individual FXS port enable/disable configuration, providing greater control over port availability and device management. |
netsapiens-node 45.0.1 — Node
| Ticket | Type | What changed |
|---|---|---|
| NN-636 | Bug | Addressed an issue that prevented the automatic creation of the Premium Video host ID during the transition of an existing domain. |
netsapiens portals 45.0.1 — Portal
| Ticket | Type | What changed |
|---|---|---|
| OMP-6870 | Bug | Fixed an issue that caused the Read More link to display an inaccurate product status message for IBM Watson TTS configurations. The link now correctly reflects the current status of the configured TTS service and no longer indicates that the product version is unpublished when the configuration is active and supported. |
| OMP-6877 | Bug | Fixed a v45 regression and strengthened permission enforcement to ensure Site Managers cannot access, edit, or modify the Profile, Security, or other user details of higher-scope users. |
| OMP-6908 | Bug | Fixed an issue where sorting report columns caused the Listen button to lose functionality. Users can now successfully play call recordings after sorting any column in the Queue Stats, Agent Stats, and Dialed Number Stats reports. |
netsapiens-webphone 45.1 — WebPhone
| Ticket | Type | What changed |
|---|---|---|
| WP-2358 | Bug | Addressed a v45 regression issue that caused active call information to be overwritten when a second incoming Webphone call was rejected. Users now see the correct caller information for their active call after rejecting a second incoming Webphone call, ensuring accurate call identification. |
v45.0 GA Release (July 1, 2026)
Early Access was available starting October 28, 2025; General Availability (GA) followed on July 1, 2026. Read the forum announcement: "SNAPsolution v45.0 GA Release is Now Available!"
"Guidebook for SNAPsolution v45.0: Preparing for Upgrade" — new for this release. Covers what's new in v45, breaking changes and how to remedy them, installation checks, and debugging tips. Read it in full before upgrading, and raise any questions beforehand — changing course after upgrading can mean avoidable costs or disruption.
200 tickets shipped in this release, spanning 12 modules:
API (73 tickets)
| Ticket | Type | What changed |
|---|---|---|
| API-1373 | Improvement | Improved push notification delivery across Mobile, PWA, and WebPhone applications. Voicemail notification events are now sent to devices for all inbound voicemail types. |
| API-1446 | Improvement | Improved the automatic correction of corrupted email templates in the system by verifying and re-inserting templates with null or zero file sizes during API installation. |
| API-1497 | Bug | Added a new API Config, SOX_ENCODING, which selects the codec the system uses to store system audio files (such as greetings) when uploading from the Portal. By default, this is set to u-law and system audio files will adopt u-law encoding. Set the config to the following to adopt a-law encoding: Configure::write("SOX_ENCODING", "a-law") |
| API-1643 | Bug | Corrected a data rounding issue that caused discrepancies between emailed call center statistics and portal data when time values exceeded 24 hours. Additionally, introduced support for PORTAL_CALL_QUEUE_STAT_TIME_FORMAT to ensure time formats in email reports now align with those displayed on the portal. |
| API-1688 | Bug | Fixed an issue where the queue total did not include both Total Volume and Forwarded (FWD) statistics, resulting in incomplete reporting. The queue total now accurately reflects all relevant metrics. |
| API-1769 | Improvement | Created the following API v2 routes for conferences and conference participants: Get Conferences in Domain; Create Conference for Domain; Get Conferences Count in Domain; Get Conference CDR from Domain; Update Conference in Domain; Delete Conference in Domain; Get Participants from Conference; Create Participant for Conference; Update Participant for Conference; Delete Participant from Conference. |
| API-1785 | Bug | Fixed an issue where sharing a call trace generated from data originating in a previous year would fail. The share file was incorrectly referencing the current year's database table instead of the table corresponding to the trace's source data. Call traces from prior years can now be saved and shared correctly. |
| API-1829 | Bug | Corrected an issue where reading Allow/Block rules in the API was inaccurate. |
| API-1841 | Bug | Resolved an issue where faxes sent via Pangea email-to-fax were not appearing in the Portal inbox. Faxes sent from the Portal now correctly appear in the Sent items. Faxes sent via email or ATA continue to remain hidden by design to support compliance requirements. |
| API-1862 | Improvement | Enhanced the push notification system by improving the cleanup of invalid push tokens. This update reduces the number of incorrect tokens sent to vendors, resulting in more efficient delivery and fewer rejected push attempts. |
| API-1959 | Bug | Resolved an issue where API v2 allows creation of Time Frame names with special characters, causing deletion issues and display problems in the portal. |
| API-1962 | Bug | Added protection to prevent deletion of answering rules associated with the * (star/default) Time Frame. These rules are now safeguarded to ensure system integrity and prevent accidental removal of default configurations. |
| API-1985 | Bug | Addressed a bug where the API incorrectly returns a success code (202) when attempting to delete a non-existent Answering Rule. |
| API-1992 | Bug | Resolved an issue where the orig_callid and term_callid parameters were functional but undocumented in the API v2 CDR read endpoint. These parameters are now officially supported and documented. |
| API-2000 | Bug | Added a missing endpoint in API v2 that allows sending calls to a queue. |
| API-2015 | Bug | Enhanced the API v2 subscriber update endpoint to include stricter validation. Requests to update a subscriber that does not exist will now return a 404 Not Found response, preventing unintended operations and improving API reliability. |
| API-2038 | Bug | Resolved an issue where the Get SMS Numbers for Domain API call (/domains/{domain}/smsnumbers) failed when used with a Reseller scope unless dest was set to "*". Reseller and other lower-scope users can now access this endpoint without this setting, improving compatibility and simplifying integration. |
| API-2055 | Bug | Improved audit log subscriptions to avoid duplicate data. |
| API-2121 | Bug | Optimized Aria conversion of CDRs by removing unnecessarily complex indexes prior to processing. |
| API-2131 | Improvement | Implemented Reseller configurations for the Snom ZTP provisioning system with the following API configs: SnomZTP.<Reseller>.key: The Snom Access Key ID in the SRAPS portal for the given Reseller. SnomZTP.<Reseller>.secret: The Snom ZTP Secret in the SRAPS portal for the given Reseller. SnomZTP.<Reseller>.company: The company ID in the SRAPS portal for the given Reseller. |
| API-2137 | Improvement | Resolved a gap in API v2 where the "Report Active Calls" endpoint lacked support for viewing peak active calls by reseller with date range filtering—functionality previously available in the legacy API. |
| API-2144 | Bug | Migrated Call Center Statistics endpoints from API v1 to v2, ensuring feature parity and case-insensitive fields. |
| API-2153 | Bug | Added support for 10DLC STOP functionality with the addition of API and UI configs. API configs: SMS_STOP_KEYWORD (default STOP,END,QUIT,CANCEL,UNSUBSCRIBE) specifies keywords that recipients can send. If sent, these keywords will trigger the response specified by SMS_STOP_REPLY and will stop messages from being sent to that number. SMS_CONTINUE_KEYWORD (default START,SUBSCRIBE,YES) specifies the keywords a recipient can send to start receiving messages again after sending an SMS_STOP_KEYWORD. SMS_HELP_KEYWORD (default HELP) specifies the keyword used to trigger a HELP message, as defined by PORTAL_SMS_HELP_MESSAGE. SMS_STOP_REPLY (default "STOP confirmed. You will no longer receive messages from this number. Reply START to opt back in.") defines the reply sent to a recipient that has entered an SMS_STOP_KEYWORD. SMS_CONTINUE_REPLY (default "You have successfully opted back in and will receive messages from this number again.") defines the reply sent to a recipient that has entered an SMS_CONTINUE_KEYWORD. UI Configs: PORTAL_SMS_HELP_MESSAGE (default "Please reply with <StopKeyword> to opt out of messages, or <Continue Keyword> to opt back in.") specifies the reply sent to a recipient that has entered a SMS_HELP_KEYWORD. PORTAL_SMS_STOP_REPLY (default defined by the API config, PORTAL_SMS_STOP_REPLY) overrides the API config SMS_STOP_REPLY, allowing customization per domain of an SMS campaign's auto reply to a STOP request. PORTAL_SMS_CONTINUE_REPLY (default defined by the API config, PORTAL_SMS_CONTINUE_REPLY) overrides the API config SMS_CONTINUE_REPLY, allowing customization per domain of an SMS campaign's auto reply for opting back in. |
| API-2164 | New Feature | Added support for including custom "call-parameters" in API calls. These parameters can now include nested details—such as voice settings or scripts—that are passed to destination services like Web Responder. Arrays are not supported in this structure but the data contained in nests can be tailored to the needs of your specific applications and Web Responder script. These custom parameters allow for extreme flexibility when combining API and Web Responder functionality with custom TTS available depending on varying call details, such as Caller ID. |
| API-2201 | Bug | Fixed an issue where the "recording-configuration" field was missing when reading all call queues in a domain via API v2. Now when reading multiple call queues, devices, domains, or users, the field "recording-configuration" will also be returned. |
| API-2208 | Bug | Improved handling of PORTAL_DOMAINS_NEW_POSTFIX in API v2. User creation via API v2 now correctly retains the configured PORTAL_DOMAINS_NEW_POSTFIX in the subscriber_login field, ensuring the postfix is no longer stripped. |
| API-2249 | Bug | Resolved an issue where emailed call center reports were missing AST statistics. Reports now correctly display all relevant metrics. |
| API-2251 | Bug | Resolved an issue where inbound messages with text inside an MMS were incorrectly treated as MMS. The API now correctly identifies and processes the text portion as SMS, allowing inbound messages containing SMS and MMS to be properly received in the portal. |
| API-2270 | Bug | Ensured that when a call reaches a queue and is, through that queue's forwarding settings, sent to a second queue, that the CO (Calls Offered) statistic for the initial queue is incremented. |
| API-2292 | Bug | Improved support for phone numbers stored outside the DID table by honoring existing UI configs. Also fixed a bug where the dialrule_domain field wasn't updating automatically after changes, which previously caused empty DID inventory displays in the portal. |
| API-2318 | Bug | Improved the API's subscription read functionality to allow Super Users and Resellers to view subscriptions created by lower-level scopes. Also updated create and update operations to ensure the reseller field is correctly set for domain-specific subscriptions, enabling proper visibility for Reseller scopes. |
| API-2380 | Bug | Corrected an issue when updates with names differing only in capitalization passed validation, causing downstream issues. These requests will now return a 404 Not Found with a warning about case sensitivity. |
| API-2392 | Bug | Resolved an issue where Office Manager API keys cannot edit or update their own subscriptions. New documented paths in API include /domains/{domain}/subscriptions and /domains/{domain}/subscriptions/{id}. |
| API-2393 | Bug | Added logic to prevent the scope field of an event subscription from being modified when the update originates from a higher-level scope. This ensures that subscriptions retain their intended scope and are not inadvertently overridden. |
| API-2419 | Bug | Improved the performance of the image upload API by optimizing how image data is handled before storage. Specifically, image data is now encoded in hexadecimal format prior to being sent to the MySQL database. |
| API-2425 | Improvement | Added Support for SNAPbuilder in API v2 with many paths documented in the SNAPbuilder section of API documentation. |
| API-2435 | Bug | Resolved a bug to properly hide caller information when privacy is enabled, ensuring correct display based on user roles. |
| API-2444 | Sub-task | Introduced a new Count Device Profiles endpoint, which allows users to retrieve the total number of device profiles in their environment. This provides a quick and efficient way to monitor device profile volume for reporting and management purposes. |
| API-2445 | Sub-task | Added three new endpoints to API v2 that allow users to retrieve counts of CDR (Call Detail Record) schedules based on different criteria. These include counting CDR schedules for a specific domain, for a reseller, and by name. |
| API-2447 | Sub-task | Added the Charts Count and Charts List endpoints for API v2 to enhance chart management capabilities. The Charts Count endpoint allows users to retrieve the total number of charts available, while the Charts List endpoint provides access to a detailed list of all charts. |
| API-2448 | Sub-task | Added two new endpoints to API v2 to support enhanced dashboard management. The Dashboards Count endpoint allows users to retrieve the total number of dashboards, while the Dashboards List endpoint provides access to a complete list of available dashboards. |
| API-2449 | Sub-task | Added two new endpoints to API v2 to enhance phone resource management. The Count Phone Configurations endpoint allows users to retrieve the total number of phone configuration records, while the Count Phone Templates endpoint provides the total number of phone templates available. |
| API-2450 | Sub-task | Added endpoints to API v2 to support enhanced quota management for domains and resellers. These endpoints allow users to retrieve detailed quota information and count quota records. |
| API-2453 | Sub-task | Added a new API v2 endpoint to support listing departments within a specific domain. This allows clients to retrieve department data scoped to a domain. |
| API-2454 | Sub-task | Added two new API v2 endpoints to support listing presence data at both the domain and department levels. These endpoints enable clients to retrieve presence information scoped to organizational units, providing visibility over user availability across domains and departments. |
| API-2455 | Sub-task | Added a new endpoint to API v2 to support reseller management by allowing users to retrieve the total number of resellers in the system. |
| API-2456 | Sub-task | Added new API v2 endpoints to support counting devices across various organizational scopes, including domain, user, device, and reseller. These endpoints provide flexible access to device count data at different levels of the system. |
| API-2457 | Sub-task | Added a new API v2 endpoint to support counting agents within a specific call queue, enhancing visibility into queue staffing. |
| API-2458 | Sub-task | Added a new API v2 endpoint to count the number of Answering Rules configured within a given domain. |
| API-2459 | Sub-task | Added a new API v2 endpoint to count the number of voicemails stored in a specific user's voicemail folder, supporting voicemail management. |
| API-2460 | Sub-task | Added a new endpoint to API v2 to support greeting resource management by allowing users to retrieve the total number of greetings associated with a specific user. |
| API-2461 | Sub-task | Added a new endpoint to API v2 to support Music on Hold (MOH) resource management by allowing users to retrieve the total number of MOH configurations within a specific domain. |
| API-2462 | Sub-task | Added a new endpoint to API v2 to support counting Music on Hold (MOH) configurations assigned to individual users. |
| API-2463 | Sub-task | Added a new endpoint to API v2 to support counting dial rules within a specific dial plan, improving visibility into dial plan configurations. |
| API-2464 | Sub-task | Added a new endpoint to API v2 to count Phones (MAC Addresses) within the system by domain, reseller territory, or model. |
| API-2465 | Sub-task | Added a new endpoint to API v2 to support counting sites within a specific domain. |
| API-2466 | Sub-task | Added a new endpoint to API v2 to support counting UI config settings across the system. |
| API-2467 | Sub-task | Added a new endpoint to API v2 to support counting voicemail reminder records for individual users. |
| API-2468 | Sub-task | Added a new endpoint to API v2 for Listing Public User Information for a Domain. |
| API-2469 | Sub-task | Added a new endpoint to API v2 to support listing site records within a specific domain. |
| API-2470 | Sub-task | Added a new endpoint to API v2 to support counting hold messages within a specific domain. |
| API-2471 | Sub-task | Added a new endpoint to API v2 to support counting system audio file records by domain or individual users. |
| API-2475 | Improvement | Added "kid" parameters to JWT tokens when using RSA encryption. This allows the user to quickly identify which public key from the JWK Set should be used to verify a given token. |
| API-2477 | Improvement | Cleaned up logic concerning users, Auto Attendants, routes, dial translations, dial permissions, phone numbers, queues, agents, answering rules, Time Frames, and audit logs in API v2. |
| API-2479 | New Feature | Added an API path to enable access to iNSight data. This includes prebuilt queries and ranges available with more advanced options available for iNSight Pro users. |
| API-2482 | Improvement | Corrected a spelling error in API Dog's user schema (directory-announce-in-dial-by-name-enabled). The correction exists only in API Dog and will not propagate to the documentation site until the proprietary publishing script is run. |
| API-2507 | Bug | Improved visibility of event subscriptions for users with Basic User type scopes. Resellers and Office Managers can now more easily view and manage event subscriptions associated with these users. |
| API-2511 | Improvement | Addressed an issue where the API would return timeframe-name as an integer when the name consisted only of digits, instead of consistently returning it as a string. This fix enforces the string type for timeframe-name. |
| API-2554 | Bug | Corrected an issue where call trace access was being blocked by CSP in some cases due to DNS configurations. |
| API-2556 | Bug | Improved the "count" action in the API for phone numbers within the Reseller scope to better utilize updates to the dialrule_domain field, improving page load times. |
| API-2559 | Improvement | Added two UI configs during Early Access feedback: PORTAL_SMS_STOP_REPLY and PORTAL_SMS_CONTINUE_REPLY. These define the text of reply messages to a STOP request or when a recipient opts back in to an SMS campaign. These UI configs override the API configs, SMS_STOP_REPLY and SMS_CONTINUE_REPLY, allowing for more flexibility and further localization options for SMS auto replies. |
| API-2566 | Improvement | Added validation to prevent SMS call queue configuration conflicts with 10DLC compliance keywords. The system now blocks saving call queue configurations when the initiation or termination keywords match reserved 10DLC keywords. |
| API-2655 | Bug | Addressed API installer issues caused by merge conflicts with recent database updates. Now, email templates and schema modifications are correctly implemented. |
Core Module (NMS) (52 tickets)
| Ticket | Type | What changed |
|---|---|---|
| NMS-258 | New Feature | An issue was identified where SBus did not replicate service codes between a deployment's servers when using the Admin UI. This is controlled by the UI config, SBUS_SEND_CONFIG_SRV_CODE (default, "no"). If service codes are not being replicated (and that behavior is desired), make sure the UI config is set to "yes". This config may only be set system-wide. |
| NMS-1013 | Bug | Resolved a rare crash condition in the Core Module that occurred during WAV file writing. |
| NMS-1424 | Bug | Corrected SSRC, sequence number, and timestamp handling for Comfort Noise packets to ensure accurate synchronization and stream integrity. |
| NMS-1574 | Bug | Fixed an issue where SIP trunk calls over geo-connections incorrectly count as two external calls, resulting in call limit issues. |
| NMS-1652 | Improvement | Added support to send SIP OPTIONS through connections. This allows endpoints to send OPTIONS pings. If no response is received within the period specified by the Core system parameter, RegisterTimeout, the system will disallow termination and trigger the system to look for other routes and forwarding options or end the call. Introduced Core System parameters and connection rules. New System Parameters: GwOptPeriod (default "60"): This is the period the system will attempt to send SIP OPTIONS requests to assess the health of the termination end of a connection. This parameter can be overridden with the connection rule, OptPrd. GwTermCheckOptions (default "yes"): Enables the system to check for 200 OK responses to SIP OPTIONS requests. If no 200 OK is received within the period defined by RegisterTimeout, connection termination will be disallowed (SendOptions must be added to the connection). If set to "no", the polling of Connection health with OPTIONS will be disabled. Note this will affect any calls that utilize Connections configured to use OPTIONS health checks. New Connection Rules/Token: SendOptions: When added to a connection's Rules field, the OPTIONS will be sent towards the destination if present. OptPrd: Overrides GwOptPeriod with a new time period to send SIP OPTIONS. The rule should follow this syntax: "OptPrd=#ofseconds". For example, "OptPrd=30" will set the time period to 30 seconds. |
| NMS-2181 | Improvement | Ensured that, during geo-calls, the geo-active core will be responsible for sending RTP streams to recording servers. Previously, some cases resulted in multiple core servers unnecessarily sending rtp streams. |
| NMS-2470 | Epic | Implemented support for Session Recording Protocol (SIPREC) to enable interoperability with 3rd party Recording Management Applications. This enhancement introduces standards-based session recording via SIPREC, an integration with Smarsh Call Recording and Analytics (formerly CallCabinet), which offers configurable and secure call recording storage, and enhanced analytics capabilities. |
| NMS-2522 | Bug | Expanded the config_name table to VARCHAR(128), allowing 128 characters in a config name instead of 64. This was needed to accommodate long config names, especially those where a postfix may be appended, such as PORTAL_LOGIN_OFFICE_SSO_CLIENT_ID_<fqdn>. |
| NMS-2637 | Improvement | Changed the default of the Core system parameter, WssRenew, to "yes". This ensures the Core Module reloads the WebSocket server when the certificate is changed. This check now only occurs during a maintenance window defined by the following Core system parameters: CleanUpDayOfWeek and CleanUpHourOfDay. |
| NMS-2729 | Bug | Resolved an issue where inter-domain calls did not consistently honor caller privacy settings in Call Detail Records (CDRs). Support for privacy flags has been added to the SBus CDR Event when privacy is applied to a call. The CDR Tool and API now include logic to hide caller information when required, ensuring sensitive data is protected and privacy settings are properly enforced across domains. |
| NMS-2882 | Bug | Resolved an issue where call queue priorities were not applied correctly for agents assigned to multiple queues. Call routing now properly respects queue priority settings, ensuring agents receive calls in the correct priority order. |
| NMS-2963 | New Feature | Added MP3 playback support to the WebResponder <Play> verb. |
| NMS-2996 | Bug | Corrected an issue where the Call Queue Escape Key behaved differently depending on whether the caller pressed it while on hold or during dispatching. Now, callers are presented with the same options—based on the "If unanswered" settings—regardless of when the key is used, ensuring a consistent experience. |
| NMS-3072 | Improvement | Previously, the system attempted an occasional presence scan defined by the system parameter, PresenceScanPeriod. This can cause issues where changes in presence from Time Frame transitions are not recognized until there is a call event or the scan occurs. To allow the system to more quickly update a user's presence when Time Frames become active, Look Ahead logic has been introduced. This logic allows the system to look ahead and see what Time Frame changes will be occurring in the future. Once a Time Frame transition is noted, it is added to the Look Ahead queue (where it will not be updated via Look Ahead again). The system will then perform a scan of that user's presence when the Time Frame transition has occurred. Note that Look Ahead will increase CPU load. New System Parameters: SubLookAheadTimeFrame (default "no"): If "yes", enables Look Ahead. SubLookAheadOnlyAgent (default "yes"): If "yes", will only apply Look Ahead logic if the User is assigned as an agent in at least one Hunt Group. TimeFrameEventIntervalSec (default "30"): The resolution in seconds for scanning for future Time Frame transitions. Due to sampling effects, the resulting event is actually about twice this interval, e.g. 1 min by default. TimeFrameEventLookAheadSec (default "7202"): The span in seconds that Look Ahead logic will check for future Time Frames. This span should be longer than the period set for the System Parameter, SubCallToUpdateTO (default is 3600 sec), to account for any transitions that may happen between each scan. We recommend over two times the SubCallToUpdateTO value. Added iNSight metrics (Prometheus parameters): core_time_frame_queue_size: The size of the Look Ahead queue. core_time_frame_event: The number of Time Frame transitions being actively handled via Look Ahead by pushing into the Quick Scan Queue. |
| NMS-3231 | Improvement | Added a "Delete" operation when editing System Parameters (System > Settings > Advanced > Properties and System > Settings > Conferencing > Advanced > Properties) in the Admin UI. |
| NMS-3270 | Improvement | Made an improvement to the migration of device registrations in a server cluster when toggling the <Send503ToAll> parameter from "yes" to "no". Phones will not register with the original server again until registration expires with the failover server so call traffic is uninterrupted. Previously, after migration, the failover server would act as if devices were still registered to it, resulting in call failures when requiring geo-connections. |
| NMS-3272 | Bug | Fixed an issue where inbound calls via a Ring Group did not honor the user's "Forward On Active" call forwarding rule, unlike direct calls. This was resolved by adding a Forward No Answer check when dispatching to a User as Agent. |
| NMS-3273 | Bug | Resolved an issue where call queues did not correctly follow agents' Answering Rules when new Time Frames were activated using a Time Frame toggle. Call routing now accurately reflects agent availability. |
| NMS-3283 | Bug | Addressed an issue that caused dual-registration devices to lose the caller's name in the SIP FROM header during outbound calls. |
| NMS-3295 | Bug | Resolved an issue where new calls were being rejected with a 503 error when RTP relay ports were unavailable. The system now attempts media bypass to keep calls connected whenever possible. To support this behavior, a new system parameter, RTPRelayThrottle, has been introduced (default 25). This specifies the number of pairs of RTP relay ports reserved for active calls that may need to forward media—such as during transfers or queue dispatch—helping maintain call continuity under high load. |
| NMS-3303 | Bug | Added a new Call Detail Record (CDR) entry for calls that encounter "Forward Not Registered", "No Answer", or "Busy" conditions when routed from a queue. |
| NMS-3310 | Bug | Corrected an issue where a user's presence status is not updated to available after a call transfer. |
| NMS-3311 | Bug | Resolved an issue concerning editing User Call Features in the Admin UI (Configuration > Users > Show Features). After clicking "Change" for a specific Call Feature, special characters in the Caller field were not processed properly. Now they are. |
| NMS-3316 | Improvement | Added support for two new Dial Translation tokens to improve call routing customization: <EQ> now translates to =. <SEMI> now translates to ;. These additions make it easier to define complex dial plans and routing rules using familiar symbols. |
| NMS-3326 | Improvement | Added the "Reject" verb to WebResponder, which ends an incoming call at the signaling stage, before it's answered. It supports a reason attribute to specify how the refusal is signaled: <Reject reason="busy"/> returns a 486 Busy Here response. <Reject reason="rejected"/> returns a 603 Decline response. <Reject reason="unavailable"/> returns a 503 Service Unavailable response. |
| NMS-3354 | Bug | Added a Core system parameter, PreDspSubSnd100 (default "yes"). When enabled, the NMS sends a 100 response immediately upon receiving the SUBSCRIBE request, before processing. This ensures that the 100 is received within 100 milliseconds of the request and prevents duplicate SUBSCRIBEs. |
| NMS-3359 | Bug | Fixed an issue where the Core Module would fail to start the WebSocket server when IPv6 was not enabled. |
| NMS-3363 | Improvement | Improved performance by using filesystem events to trigger MWI instead of scanning system subscribers. |
| NMS-3377 | Improvement | Enhanced call queuing performance by introducing a caching mechanism for queue counts. The cache updates at most once per second, reducing processing overhead while maintaining timely and accurate call dispatch. |
| NMS-3387 | New Feature | Added the Call Queue Option, "OnlyLocalAgent". When added to a Queue's Options field in the Admin UI, calls to the queue will only be dispatched to agents registered to the local core of the call. Also added three metrics that can be used to design iNSight dashboards and alerts: queued_local: Count of calls queued locally. average_wait_seconds_local: Local Average Wait time in seconds. max_wait_seconds_local: Local Maximum Wait time in seconds. |
| NMS-3388 | Bug | Addressed an issue where request confirmation on PUSH-enabled devices causes call queues to skip agents and go directly to voicemail. |
| NMS-3408 | Bug | Fixed an issue where the Core Module would ignore call transfer requests if the call was connected to a blocking WebResponder <Stream>. |
| NMS-3410 | Improvement | Added prometheus metrics that track hunt groups' fifo. The following parameters can be used to create custom iNSight dashboards and alerts: callqueue_hg_db_fifo, callqueue_hg_db_fifo_over_total, callqueue_hg_db_fifo_size. |
| NMS-3435 | Bug | Updated system behavior that previously forced an immediate Queue Timeout (T/O) when a push request expired. This update ensures that queue handling follows normal timeout logic instead of triggering an automatic timeout upon push expiration. |
| NMS-3521 | New Feature | Added the Dial Translation token, "AddHrdDiv", to be used to add Diversion Headers using the Dial Translation's parameter field if diversion header information is available to draw from. An example value might be <AddHdrDiv="<HdrDiverName>"<SP><LT>sip:<HdrDiverUser:1858!!!!*]>@<HdrDiverHost><GT>> |
| NMS-3522 | New Feature | Added logic to ensure that a Diversion Header in an Invite sent from the geo-active node will be trusted by the geo-passive node. |
| NMS-3526 | Bug | Improved how calls are handled during reconnect scenarios to prevent unexpected behavior. The system now ensures it only responds to the correct confirmation signal, helping maintain smoother and more consistent call experiences. |
| NMS-3538 | Bug | Addressed an issue where API-generated calls to Web Responders were not properly closing sessions. Sessions are now correctly terminated. |
| NMS-3543 | New Feature | Added new logic for CDRs concerning geo-call attended transfers. Previously, logic resulted in overwriting accurate CDR data in geo-passive nodes. Now, this overwriting does not take place and instead a new CDR is created for the transfer, following expected behavior. Introduced the system parameter, CdrUpdateGeoActive (default "no"). Set to "yes" to apply pre-v45 behavior. |
| NMS-3568 | New Feature | Added System Parameters, Send503ExcludedAors and Send302ExcludedAors, to provide a list of AORs that will be excluded from Send503ToAll and Send302ToAll respectively. This allows testing of Cores after maintenance and before putting back into production. Send503ExcludedAors: Specifies a list of AORs (separated by space), extracted from the From-URI, to be excluded from "Send 503". Send302ExcludedAors: Specifies a list of AORs (separated by space), extracted from the From-URI, to be excluded from "Send 302". |
| NMS-3581 | Improvement | Introduced support for the <PersistPai> Dial Translation Token, which can be added to the Application Parameter field and ensures the P-Asserted-Identity (PAI) header is retained when required, such as upon re-INVITE. This enhancement improves identity consistency across call flows, supporting more reliable caller identification in complex routing scenarios. An example value might be "<PersistPai>P-Asserted-Identity:<LT>sip:<OwnCidNmbr>@<OwnDomain>;user=<OwnUser><GT><CRLF>" |
| NMS-3624 | Improvement | Added the NMS Parameter, CdrSBusChannelRange, default to "0", which allows multiple channels for CDR (Call Detail Record) SBus Events. By default, prior behavior continues, with only one CDR event channel. Modifying the parameter will hash the Orig Call-ID and distribute events across multiple channels. |
| NMS-3631 | Bug | Fixed a rare crash case in WebResponder. |
| NMS-3634 | Bug | Improved URL parameter parsing to ignore leading/trailing spaces in parameter names, ensuring consistent recognition of PIDF-Lo headers and accurate E911 call routing. |
| NMS-3649 | Bug | Fixed an issue where the system failed to detect PIDF-Lo location information, causing call failures. Parsing of the content body has been relaxed to no longer require a terminating carriage return and line feed (CRLF), improving compatibility and reliability. |
| NMS-3657 | Bug | Ensured that, if available, a call's Telephone Event type (for DTMF) will share the same sampling rate as the media codec in the 200 OK. Previously, behavior was unpredictable. |
| NMS-3692 | Improvement | The "Say" Web Responder verb has been enhanced to support SegmentedTTS, a new mechanism that splits long text to speech (TTS) scripts into smaller segments for more efficient synthesis and playback. |
| NMS-3751 | New Feature | Introduced a new functionality for connection rules, SRTP and SoRTP, allowing for connection-specific crypto suites, independent of the system-wide default defined by the Core system parameter, CryptoDefaultSuite. SRTP=<encryptiontype> (for example, SRTP=AES_256_CM_HMAC_SHA1_80). SoRTP=<encryptiontype> (for example, SoRTP=AES_256_CM_HMAC_SHA1_32config). |
| NMS-3812 | Bug | Removed deprecated Call Center Statistics files from the Admin UI to improve maintainability and ensure the interface reflects only current, supported functionality. |
| NMS-3936 | Bug | Resolved an issue where an invalid subscriber data limit value could cause an unexpected crash in the Core Module. |
| NMS-3941 | Bug | Fixed an unexpected failure that could occur when reading TCP packets containing a fragmented SIP Content-Length header. |
| NMS-3943 | Bug | Resolved an issue where the Core Module would fail to load the voicemail email setting from subscriber configuration. Affected subscribers will now have this setting correctly applied. |
Portal (26 tickets)
| Ticket | Type | What changed |
|---|---|---|
| OMP-3732 | New Feature | Added a new feature to the Portal allowing authorized users to generate a Global One-Time Password (OTP) for endpoints. This temporary, single-use password supports factory resets and initial provisioning of devices. After initial provision, devices are given a Per-Device Password (PDP) for future syncs with the system. Previously, this functionality was only available within the Endpoints Module. |
| OMP-4213 | Improvement | When deleting a Site, options to unassign or delete the site's users and queues will now be offered. |
| OMP-4442 | Bug | Corrected an issue where a queue's Call Volume total was inaccurate. |
| OMP-4774 | Bug | Resolved inconsistencies when using the Portal and WebPhone together, particularly when the Portal session expired. Previously, WebPhone could continue making API calls after logout, leading to unexpected behavior. Update includes a session expiry popup in the Portal with an option to re-login, and improved handling of WebPhone sessions when the Portal expires. New configuration: when UI config PORTAL_REVOKE_JWT_ON_EXPIRE = yes, WebPhone will log out when the Portal session expires. When PORTAL_REVOKE_JWT_ON_EXPIRE=no, WebPhone will retain its session token in line with best practices. |
| OMP-5008 | Bug | Updated Calls Offered (CO) definition to correctly include forwarded and voicemail calls. This ensures more accurate reporting and classification of call events across the system. |
| OMP-5145 | Bug | Addressed an issue affecting the sorting of Caller ID and E911 Caller ID numbers in dropdown suggestions. Numbers are now displayed in the correct order. |
| OMP-5404 | Improvement | Addressed an issue where the default value for the UI config PORTAL_MENU_SHOW_ROUTE_PROFILES was erroneously recorded as "yes" for Super Users and Resellers in the Portal Library. Now the default appears as "no". |
| OMP-5764 | Bug | Addressed an issue where newly created time frames appeared as expired in answering rules. |
| OMP-5881 | Improvement | Enhanced Time Frame display and usability across the application. Time Frames are now grouped by owner in dropdowns, improving clarity and visual organization. Users can create Time Frames with the same name as domain-level entries, with domain-level time frames clearly indicated as "overridden by user" during Answering Rule selection. Additionally, Time Frames are now displayed case-insensitively in selection dropdowns for improved readability and consistency. |
| OMP-5915 | New Feature | Added support to the platform to connect to Crexendo Marketplace. |
| OMP-5957 | Bug | Corrected the definition of the Forward (FWD) stat to clarify that calls forwarded to voicemail do not increment FWD. |
| OMP-6054 | Improvement | Removed the Device Type dropdown from the FaxBack Edit # modal in the portal as FaxBack will not allow an unknown device type. ATA types should instead be specified via the FaxBack admin Portal. |
| OMP-6193 | Improvement | When viewing a UI config that has multiple default values, each scope's default value will now be displayed in their own row. |
| OMP-6225 | Bug | If sites are disabled for a domain, the "Overwrite with Site Defaults" field when editing a user is now correctly hidden. |
| OMP-6293 | Task | Reviewed and replaced localization strings within the Portal, WebPhone, SNAP.HD, and SNAPanalytics to eliminate duplication and grammar errors. |
| OMP-6296 | Bug | Resolved an issue where, after a user was logged in for two hours, the time format displayed in the UI no longer aligned with the configured settings. |
| OMP-6301 | Bug | Resolved a critical issue preventing call transfers via the portal pop-up when SIPREC is enabled. |
| OMP-6472 | Improvement | Improved the "Forward if unavailable" help text in the Pre-Queue Options tab when adding or editing a call queue. Now, the help text reads: "Callers are forwarded here when the queue has reached its expected max wait, the queue is full, or the queue has no agents currently logged in." |
| OMP-6474 | Bug | Fixed an issue where multiple Auto Attendants designed in API v2 started with the same prompt ("Prompt_100"). This caused problems like overlapping call rules and made only one AA show up in the Manager Portal. Now, the portal assigns unique starting prompts to each newly created Auto Attendant. |
| OMP-6477 | Bug | Corrected an issue on Ubuntu 24 where updating .po files via updatelang.sh was not working. Now, the localization library has been updated and is compatible with U24. |
| OMP-6537 | Bug | Fixed an issue where some calls were missing transcription and sentiment data, even when the queue, user, or domain was properly configured for it. All eligible calls now correctly display transcription and sentiment information. |
| OMP-6540 | Bug | Fixed an issue seen in residential domains that would show users other user data when exporting contacts. |
| OMP-6575 | Improvement | Ensured that audit logs record when users export lists of contacts. |
| OMP-6605 | Bug | Fixed an issue with the "Show default configs" checkbox. Previously, modifying the box had no effect on the UI. |
| OMP-6696 | Bug | Improved 10DLC behavior after receiving early access feedback. Addressed the need for users to receive notifications when attempting to message numbers that have opted out. |
| OMP-6807 | Bug | Removed add-on settings for Premium Video. Instead, more robust feature sets can be enabled by choosing different Premium Video plans. |
WebPhone (16 tickets)
| Ticket | Type | What changed |
|---|---|---|
| WP-1220 | Improvement | Resolved an issue where the missed calls count on the WebPhone's home card persisted after viewing missed calls. |
| WP-1508 | Improvement | Added the UI config, PORTAL_WEBPHONE_REGISTRATION_REPLACE (default "yes"). When enabled, if a second WebPhone instance is opened, a prompt appears for the new session, asking the user whether the new instance should take over or the instance should return to the login page. Taking over the session will update the device credentials, thus stopping any other instances from registering. Setting to "no" will return to pre-v45 behavior. |
| WP-1679 | Bug | The value for PORTAL_WEBPHONE_PWA_NAME is now displayed above the PWA icon (during hover-over, etc) and appears along with push notifications. |
| WP-1784 | Bug | Resolved an issue where each click-to-call opens a new PWA window; multiple windows accumulated with repeated calls. PWA now reuses the existing instance for calls, preventing multiple windows from opening. |
| WP-1820 | Improvement | Extended iFrame support in the WebPhone's left sidebar, allowing configuration of up to three distinct iframe panels. In addition to the original iFrame configs (PORTAL_WEB_PHONE_IFRAME_ICON, PORTAL_WEB_PHONE_IFRAME_NAME, PORTAL_WEB_PHONE_IFRAME_URL), new configs have been added for each additional potential iFrame: PORTAL_WEB_PHONE_IFRAME_ICON_2, PORTAL_WEB_PHONE_IFRAME_NAME_2, PORTAL_WEB_PHONE_IFRAME_URL_2, PORTAL_WEB_PHONE_IFRAME_ICON_3, PORTAL_WEB_PHONE_IFRAME_NAME_3, PORTAL_WEB_PHONE_IFRAME_URL_3. |
| WP-1862 | New Feature | Added support for SMS queue functionality in WebPhone. |
| WP-1865 | Bug | Fixed an issue where the Caller ID Name and Number were incorrectly displayed in the Webphone Call Park menu after a Privacy-enabled call was parked. |
| WP-1896 | Improvement | Made an improvement to the video meeting experience. When a user clicks the video icon from a contact card to start a video meeting or screen share via Iotum, the recipient can now choose to "Join" or "Decline" the invitation. If the recipient declines, the caller receives a notification in the chat indicating the invitation was declined. |
| WP-1928 | Bug | WebPhone SMS now allows users to End SMS sessions when the card is minimized through the kebab menu dropdown. |
| WP-2045 | Bug | Resolved an issue that occurred when replying to a contact from the Call History page. Using SMS in this scenario would result in a broken message card where users were unable to identify the number they were using to send the message. Now, when you reply via SMS from Call History, the message card will display the correct outbound number as expected. |
| WP-2144 | Task | Deprecated the UI config, PORTAL_WEBPHONE_NAME. Now, the name of the WebPhone app will only be specified by PORTAL_WEB_PHONE_NAME. This will affect dropdown app lists and the name that appears on the browser tab. |
| WP-2158 | Bug | Resolved an issue where multiple SMS threads were incorrectly created for the same conversation. Messages now correctly group into a single thread as expected. |
| WP-2159 | Bug | Corrected an issue where, after accepting a call back, Call Park options were unavailable. |
| WP-2165 | Bug | Resolved a WebPhone crash that occurred when accessing a user's profile without an associated email address. |
| WP-2168 | Bug | Fixed an issue where an extra card appeared when switching SMS sender numbers. |
| WP-2212 | Bug | Fixed an issue that prevented push notifications for chat, SMS, MMS, and calls from being delivered when the PWA was closed, even though the device remained in a "Push Enabled" state. Push notifications now function reliably regardless of whether the PWA is open or closed. |
Endpoints Module (14 tickets)
| Ticket | Type | What changed |
|---|---|---|
| NDP-577 | Bug | Addressed a problem that occurred when a phone was deleted from a domain and later added to a different domain. In this scenario, residual configuration data could persist, causing inconsistencies. This fix ensures that all provisioned data is fully cleared when a phone is removed from a domain. When the same device is added to another domain, it starts with a clean configuration, preventing any carryover from prior assignments. |
| NDP-887 | Bug | Corrected an issue with the following devices that used a new config format in v44+. The last sync value for these devices was not updating: Flyingvoice PR08, Flyingvoice FIP15GPlus, Flyingvoice P23GW, Algo 8301, Algo 8373, Snom M500, Snom M100, Polycom Rove B1, Mitel 6940. |
| NDP-979 | Bug | Fixed a parsing issue in SNAPbuilder where labels containing tokens couldn't properly represent extensions with letter suffixes. The token substitution logic has been corrected and verified to ensure accurate label rendering during configuration generation. |
| NDP-987 | Sub-task | Added a new UI Config, PORTAL_BUILDER_HOTDESK_YEALINK_ACCOUNTLABEL_SHOW_OWNER. When set to "yes" (default "no") and hot desking, the account label of a Yealink device reflects the current hot desk owner. |
| NDP-992 | Improvement | Added a new Endpoints Module config, "FanvilBLFDefaultTransferAttended". Default value is "no", which retains previous behavior where blind transfers are supported via BLF keys. When set to "yes", BLF keys will allow for attended transfers instead. |
| NDP-1014 | Bug | Resolved an issue where multiple device-level overrides were not parsed correctly. |
| NDP-1015 | Bug | Addressed an issue occurring when downloading the audit log CSV from the Endpoints Admin UI, which resulted in errors and a blank page. This has been fixed and downloading works as expected. |
| NDP-1023 | Bug | Corrected an issue that occurred when saving directory data during the "Apply Backup" process. This directory information is now properly retained and applied, improving reliability during backup restoration. |
| NDP-1034 | Bug | Resolved an issue affecting tab selection on Grandstream devices, ensuring the correct tab is now consistently displayed. |
| NDP-1083 | Improvement | Added functionality to generate unique usernames for each device, improving identity management and provisioning flexibility. |
| NDP-1129 | Improvement | Updated the Apache configuration to ensure the Content-Length response header is returned when the request header, Accept-Encoding, is missing. Previous issues with this behavior caused provisioning failures for older devices. |
| NDP-1130 | Bug | Fixed an issue with Mitel configuration generation that occurred when Key 1 was not provisioned. |
| NDP-1133 | Bug | Fixed an issue where XML files were generated incorrectly when parameter values contained the "@" symbol. |
| NDP-1283 | Bug | Corrected an issue with Custom Format HT814_device_xml that was causing Grandstream HT devices to receive incorrect SIP provisioning information. |
Authentication (SSO / 2FA) (3 tickets)
| Ticket | Type | What changed |
|---|---|---|
| WTAUTH-2 | Epic | Implemented a new feature to centralize authentication logic across multiple applications. Now users will interact with the same login page and are then redirected to the appropriate destination based on their login source, such as the Portal or Web Phone. Also added new Portal functionality that allows administrators to enforce Single Sign-On (SSO) and Two-Factor Authentication (2FA) at various organizational levels—system-wide, domain, site, or user. |
| WTAUTH-12 | Story | Added several UI configs, allowing configuration in the Portal that before required SSH access for API Configs: PORTAL_RECAPTCHA_V2_ENABLED (enables reCAPTCHA v2), PORTAL_RECAPTCHA_V2_SITE_KEY, PORTAL_RECAPTCHA_V2_SECRET_KEY, PORTAL_RECAPTCHA_V2_INVIS_SITE_KEY, PORTAL_RECAPTCHA_V2_INVIS_SECRET_KEY, PORTAL_RECAPTCHA_MAX_TO_CHECK (default "2"), PORTAL_RECAPTCHA_MAX_TO_FAIL (default "10"; note it is the user's IP that is locked out, which could affect a shared office IP), PORTAL_RECAPTCHA_TIMEOUT_MINUTES (default "20"). Also added new UI configs to enable reCAPTCHA v3: PORTAL_RECAPTCHA_V3_ENABLED, PORTAL_RECAPTCHA_V3_SITE_KEY, PORTAL_RECAPTCHA_V3_SECRET_KEY, PORTAL_RECAPTCHA_V3_MIN_SCORE (default "0.5"; minimum score threshold for access, from 0.0 likely-bot to 1.0 likely-good). |
| WTAUTH-115 | Improvement | Languages enabled via PO file now appear in the dropdown language picker for the Portal, Auth App, and WebPhone. A file can also be added or configured at /etc/netsapiens/locale/locale_catalog_overrides.json to modify language labels that appear in the Portal, Auth App, and WebPhone. |
CDR & Reporting (6 tickets)
| Ticket | Type | What changed |
|---|---|---|
| CDR-308 | Bug | Fixed an issue where off-net calls made to check voicemail were incorrectly tagged as outbound calls. These calls are now properly classified as incoming. |
| CDR-317 | Bug | Resolved an issue where the CDR Scheduled Export process was intermittently skipping entries due to improper array splicing. This fix ensures that all relevant CDRs are consistently included in the export. |
| CDR-371 | Improvement | Implemented a feature that triggers email notifications when a CDR Scheduled Export fails—provided email alerts are enabled for that schedule. |
| CDR-374 | Bug | Resolved an issue where calls were incorrectly tagged as "answered" when the caller hung up during the voicemail greeting without leaving a message. These calls are now accurately classified as "missed," ensuring more reliable call status reporting and analytics. |
| CDR-446 | Bug | Fixed an issue where AST statistics were not updating correctly during on-net geo calls with on-net assisted and semi-assisted transfers. This ensures accurate tracking and reporting of AST metrics across all supported transfer types. |
| CDR-477 | Epic | Added a new feature that enables automated migration of events data and CDR tables from the database to S3-compatible storage. Data remains transparently accessible via API, with basic monitoring—no UI changes required. This engine is effective for tables containing historical data that rarely changes but must remain accessible for reporting, compliance, or analytical purposes. |
SNAPanalytics (Charts) (1 tickets)
| Ticket | Type | What changed |
|---|---|---|
| CHRT-521 | Bug | Fixed an issue where the SNAPanalytics wallboard logo (analytics_header_logo.png) did not honor domain-level branding but worked by server or system-wide. |
Node (5 tickets)
| Ticket | Type | What changed |
|---|---|---|
| NN-389 | Improvement | Added support for Apache load balancing of voicemail reminders. Two new configuration parameters are available in /etc/netsapiens/nsnode.json: maxVoicemailNagHandlers (default: 4) — Sets the number of workers available to process voicemail reminder events. voicemailHandlerTargetRequestCount (default: 10) — Sets the number of reminder events each worker can queue at one time. These parameters allow administrators to tune voicemail reminder throughput based on their system's needs. |
| NN-492 | Bug | Resolved an issue where voicemail event subscriptions failed to trigger webhook notifications when voicemails were left via certain methods. All relevant voicemail scenarios now correctly initiate webhook events. |
| NN-500 | Improvement | Enhanced configuration and debug logging for voicemail reminders and Time Frames, now allowing enablement without requiring a Node restart. Configure logging by adding the desired settings to the appropriate configuration section in /etc/netsapiens/nsnode.json (debug_logging: timeframes / vmailnag). |
| NN-553 | Improvement | Ensured that PWA receives voicemail push notifications when backgrounded or closed in a push enabled state. |
| NN-554 | Improvement | Corrected an issue where custom daily recurrence timeframes would loop repeatedly and not expire correctly, particularly in time zones far from GMT (e.g., Asia/Calcutta). |
SBus (2 tickets)
| Ticket | Type | What changed |
|---|---|---|
| SBUS-123 | Bug | Resolved a rare crash scenario triggered when thread initialization failed. |
| SBUS-166 | Improvement | Improved SBus request speed by allowing asynchronous sending on shared threads. |
Backup & Restore (1 tickets)
| Ticket | Type | What changed |
|---|---|---|
| BAC-53 | Bug | Resolved a minor connection pool leak that could occur after restoring a single domain. This issue was only observable under high-volume activity over short time periods. |
Certificates & Apache (1 tickets)
| Ticket | Type | What changed |
|---|---|---|
| CERT-42 | Improvement | Previously, Apache could not restart if there were config syntax warnings. Now, as long as warnings are minor, restart will be uninhibited. |