• Decrease Text SizeIncrease Text Size

Support

Maintenance & Support

Whether we're building and hosting your project or enabling you to manage multiple portals, you can count on our support. Each support agreement is tailored to your specific needs. We assist clients with advanced Development teams, handling complex web projects, and providing hosted solutions for less experienced clients. Oxcyon creates a custom support plan to ensure ongoing assistance after your project launch. Our support covers a range of services, including supporting any on-premise Centralpoint Master Server, Evergreen Updates, Version History, and training for each new release.

Centralpoint is updated biweekly to ensure you have the latest tools, regardless of hosting. Our maintenance agreement offers continuous support, granting access to our production management team from Monday to Friday, 8 am to 6 pm (Standard Support). Oxcyon provides support throughout our agreement, including Evergreen Updates, SDK access, and ongoing training.   




Developer Support

Oxcyon supports your development team by granting them full customization control over Centralpoint. We offer an SDK, Class Library, and database diagrams upon request. Additionally, we provide tailored training for your team based on their internal development requirements. Our goal is to ensure your developers receive high-level expertise so they can work independently, minimizing our intervention. We view ourselves as a trusted ally, maintaining a partnership through our Evergreen Updates. We also learn from your developers, gaining valuable insights and ideas for future development.

Oxcyon collaborates closely with your development team to integrate with their back-office initiatives. Whether it's authenticating against your AD/LDAP or exchanging credentials through a web service, we manage the User Experience cohesively. This applies within Centralpoint or even in other applications via Centralpoint-To-Go. We can expose web services and APIs on a per-client basis, including examples of SOAP and RESTful Web Services in our SDK.

Hosting: On-Premise or SaaS

Centralpoint is versatile in its installation options: on-premise, in the Cloud, or through hybrid, FedRAMP-compliant, and Private Cloud configurations. It's compatible with Azure, AWS, Google, and other platforms. For managed cloud hosting, Rackspace is the typical choice, although we can support AWS, Azure, or Google Cloud environments. Oxcyon offers managed services for Dedicated and Cloud hosting, including Security services. Your organization might have instances of Centralpoint both in the cloud and on-premise (e.g., for an Intranet). We provide managed SaaS hosted solutions or on-premise installations, even behind firewalls.

Oxcyon ensures all clients are up-to-date through our alliance with Rackspace, which recently acquired DataPipe. This partnership offers Compliant hosting services (HIPAA, PCI, etc.). Our bi-weekly Evergreen Updates, facilitated by the Rackspace partnership, maintain your environment's relevance. These updates are optional, testable locally before activation. Regardless of your hosting choice, Centralpoint requires a Microsoft Windows Operating System and Microsoft SQL (Standard or Enterprise).


                                           

Centralpoint can be installed on premise (within your environment), hosted for you by Oxcyon, or in the Cloud (including Hybrid cloud). No matter where you host, you are guaranteed to never become obsolete due to our unique, evergreen updates. These (pull) updates, provide you with the latest, greatest version of Centralpoint at all times, including all of our out of the box modules, which we release bi-weekly. Click to see our timeline of updates to see why this really is a Stream of Enhancements. 

Please see our Technical Documentation & Certifications regarding On Promise or Cloud Hosting. 

Evergreen Updates

Centralpoint stands out as the exclusive ECM offering evergreen updates, ensuring bi-weekly pulls of the latest release for each client. This distinctive feature nullifies obsolescence and confers a competitive edge over rivals. Consider this: How can you install other solutions and expect their relevance without such updates? Centralpoint obviates the need for further investments in web technology; it always remains current, regardless of hosting location.

These evergreen updates are PULL updates, sourced from Oxcyon every two weeks, be it on premise, behind a firewall, or in the cloud. Importantly, our updates don't disrupt local custom development. Your work remains separate from our updates, allowing both to progress efficiently. New features and options are available at no extra cost, utilized as needed. We take pride in leading clients by introducing novel features sourced from their insights — the Voice of Customer — guiding our R&D. These updates mirror an expanding toolkit for competitiveness in the evolving digital realm. Our role is to consistently provide you the finest digital tools. Their activation timing rests with you, but they should evolve with changing technology.

Change is constant, in technology and life. Embrace this truth with a forward-thinking digital strategy and partnership that keeps you ahead. Bid farewell to obsolescence.

Have innovative module or function ideas? Share them; they might feature in future updates.

Latest Releases

Be sure to explore our comprehensive version history, spanning two decades, showcasing the evolution of knowledge capital. This impressive lineage is the backbone of Centralpoint's extensive Module Gallery, rendering it the ultimate resource for potent, market-ready solutions. Our exclusive Evergreen updates obliterate obsolescence while fostering organic research and development, driven by the Voice of Customer (VOC).

As our client community expands, so does the influx of valuable ideas, enriching our continuous improvement journey. We encourage you to delve into our Stream of Enhancements, witnessing the progression of updates that we offer. Here's a glimpse into the last 20 updates to Centralpoint:

Centralpoint Update 8.12.16
Monday, October 12, 2026
FeatureSummary
Embedder - an unknown record or empty attribute shows only an error

The Embedder now shows only its error message when the requested record does not exist or no attribute is named. It no longer goes on to render content after the error.

Admin > IP Manager - the blocked-visitor page shows only an active block rule's message

The page that blocked visitors see now shows a message only for an active IP Manager block rule. Any other record returns an empty page, so the page can no longer be used to read other records.

Design > Data Sources - Excel export refuses a disabled data source

The Excel export of a data source now checks that the data source is enabled, the same check every DataSource CpScript makes. A disabled data source returns an error instead of its rows. If an Excel export stops working after the update, enable the data source in Design > Data Sources.

Comments - the comments RSS feed shows only comments on records the visitor can see

The comments RSS feed (/Modules/Comments/Rss.aspx) now shows only comments on records the visitor can see.

  • A feed for one record (?did=) is empty when the record is disabled, out of date range, or outside the visitor's audience or roles.
  • The site-wide feed leaves out comments on records the visitor cannot see, and respects tenant filtering.
Forms > Forms - approval email buttons that send email work only from a link the site issued

The approve-and-notify and decline-and-notify buttons in form approval emails now work only from a link the site issued. The site refuses a link that was changed.

  • The same applies to approval emails from Procedure Manuals > Policies.
  • Approval emails sent before this update lose those two buttons. Approve or decline those records in the Console.
  • The plain Approve button, which opens the record in the Console, works as before.
Forms > Forms Wizard - View Preview and View Reports require a Console user signed in on the site

The script preview page that Forms > Forms Wizard opens for View Preview and View Reports now shows content only to a Console user signed in on the website.

  • A visitor who is not signed in, or who has no Console access, sees a sign-in message and a Login link. The page shows no record content.
  • A Console sign-in does not carry over to the website. Editors sign in on the website once, then View Preview and View Reports work as before.
  • The Web Site Script Preview property in Admin > Properties now reads Enabled (Console users only) and Disabled. Its value does not change.
Centralpoint Agent - reports the default JWT key, outside Master API use, probe bursts and data files under Uploads

Centralpoint Agent 8.12.16.19 adds four security checks that report signs of a breach to Oxcyon.

  • Reports whether each site's JWT.Signing.Key.Secret is the default that ships with every install, including a key set only in Local.config. It sends a fingerprint, never the key.
  • Reports System-token and admin calls to the Master API from an address that is not this server, Oxcyon, or an allowed address. A load-balanced install lists its balancer in the Agent setting Agent:SecurityChecks:ApiCallerAllowedAddresses.
  • Counts request validation, ViewState, cryptographic and session-queue events in the Application log each hour.
  • Reports backup, source, database, log and SQL files under each site's Uploads folder.

The Master API keeps a short in-memory list of privileged calls for the Agent, and answers it only to the server itself. Each check can be turned off with the Agent setting Agent:SecurityChecks:<Name>Enabled.

Centralpoint Agent - reports accounts locked out, so a brute force that ends in lockouts is seen

Centralpoint Agent 8.12.16.14 counts the accounts locked out on each site and reports the count to the Uber with its hourly sign-in check.

  • A hard lockout and a timed lockout both count.
  • Failed attempts are added up for each user, so one user's successful sign-in no longer hides another user's failed attempts.
  • A start date moved by an import or an administrator, outside the lockout window, does not count as a lockout.
  • The first check after the Agent restarts records the current state and reports nothing.
Centralpoint Agent - reports security checks that detect signs of a breach

Centralpoint Agent 8.12.16.13 checks each server for signs of a breach and reports them to Oxcyon's Server Hub.

  • Script files added under a site's Uploads or Temp folder, or at the top of its Root folder.
  • SQL Server changes: risky options such as xp_cmdshell turned on, the sa login enabled, and new logins, sysadmins, databases and SQL Agent jobs.
  • web.config changes made outside an Oxcyon update or command, public Trace.axd, and machine or Telerik keys shared with another server.
  • New API keys, sign-ins by deleted or long-idle accounts, and bursts of failed sign-ins.
  • An IIS worker process starting a command shell.

The Agent sends key fingerprints only, never the keys. It changes nothing on the server. Each check can be turned off in the Agent's appsettings.json with Agent:SecurityChecks:<Check>Enabled, and Agent:SecurityChecks:ProcessSpawnAllow lists custom code that starts a shell on purpose.

Data Broadcast > Subscriptions - subscription changes apply only to the signed-in member

The Data Broadcast Subscriptions page now changes subscriptions only for the member who is signed in. A request that names another member, or comes from a visitor who is not signed in, is refused. Subscribing, unsubscribing from one broadcast, and unsubscribing from all work as before.

Api > CpSystem - database export writes only a .bacpac file on a local drive

The Master API's database export, which the Centralpoint Agent runs for a database backup, now writes only a .bacpac file to a local drive of the server. A network-share path or any other file type is refused, so an export cannot leave the server or replace another file.

Development > AI - restart and the batch performance test require a Developer

On the AI test page, Restart and the batch performance test now work only for an administrator of the site (or an ancestor site) or a member of the Developers role. Other users get a permission message.

Development > API - the test page no longer shows the connection string, and restart requires a Developer
  • The API test page no longer shows the site's connection string.
  • Its Restart button works only for an administrator of the site (or an ancestor site) or a member of the Developers role.
Development > Query Analyzer - restarting the site requires an administrator or Developer

The Restart button on Development > Query Analyzer now works only for an administrator of the site (or an ancestor site) or a member of the Developers role. Other users get a permission message and the site keeps running.

Site-wide - Trace.axd no longer allows anonymous access in the Master and Console web.config

The Master and website Console web.config files no longer allow anonymous access to Trace.axd. Their sign-in requirement now covers it like every other page.

The update removes the override from installed sites, and removes it again if a later deployment brings it back.

web.config change: the update removes this block from the Master Root web.config and the website Console web.config:

<location path="Trace.axd"> with <authorization><allow users="*" /></authorization>.

Client impact: a virtual directory that runs as its own IIS application with its own web.config keeps the override if it has one. Remove the block there by hand.

Site-wide - the website refuses Telerik's default upload handler

The website now refuses uploads sent to Telerik's default upload handler, Telerik.Web.UI.WebResource.axd?type=rau, which accepted a copied upload from any visitor. The Console is not affected.

  • Every built-in website upload already uses its own checked handler.
  • The rich text editor's Image, Document, Media, Flash and Template managers on website pages now upload through the editor's dialog instead.

web.config change: the update adds this block to the website's Root web.config only. It does not touch the Console's web.config:

<location path="Telerik.Web.UI.WebResource.axd" inheritInChildApplications="false"> with requestFiltering > denyQueryStringSequences > add sequence="type=rau".

Client impact:

  1. A virtual directory that runs as its own IIS application has its own web.config, which the update does not change. It keeps the default handler until the same block is added by hand.
  2. Custom code with a RadAsyncUpload on a website page and no HttpHandlerUrl stops uploading. Point its HttpHandlerUrl at a checked handler that registers an upload context, as described in the upload dialog note in this version.
DragAndDropFileUpload CpScript - drops are accepted only from the page that rendered the widget

The DragAndDropFileUpload CpScript now accepts a dropped file only from the page that rendered it, and stores it only where its tag says.

  • The module, record, folder and title now come from the tag. A changed request can no longer redirect them.
  • Each field in attributesToUploadTo takes one file per page load.
  • Only document, image and media file types are accepted.
  • A refused or failed upload now shows a message instead of counting as uploaded.
  • An uploadToFolder value without a trailing slash now stores a correct path.
  • The page must have session state. Without it, the tag shows a message instead of the drop area.

Custom code impact: custom code that posts directly to Modules/FileSharing/Telerik_RadAsyncUpload.ashx is refused with 403 after this update. Use the CpScript instead.

Site-wide - the file upload dialog takes its folder and file types from the page that opened it

The file upload dialog now saves only to the folder, and only the file types, that the page which opened it allowed.

  • With overwrite protection on, an upload goes to the dialog's own folder. A folder named in the request is ignored.
  • A file whose type the dialog does not allow is refused with "This file type is not allowed."
  • With overwrite protection off, and in the File Explorer view on website pages, uploads now also need the dialog's upload token. An upload without it is refused with 403.
  • No setting changes. The dialog sends the token itself.

Custom code impact: this extends the overwrite-protection note in this version. A custom page that uses Telerik_RadAsyncUpload_OverwriteProtection.ashx with cpType file must register a Centralpoint.Web.FormUploadContext of kind file that sets TargetFolder to the mapped folder and Extensions to its allowed list (comma-separated, for example .pdf,.docx). Without both, its uploads are refused. A page with cpType resource registers kind resource.

Data Transform > Data Transfer - files download through the Console

Data Transfer files now download through the Console, because they are no longer reachable by URL.

  • Source file, Excel Sheet Consolidator and Process Monitor download links in the Console keep working for administrators.
  • The upload control lists each configured destination file that exists, as a download link.
  • Only administrators (Admins and LimitedAdmins) can download these files. Other users see a message instead.
  • Custom attribute files linked from the Console, such as the Form Wizard's generated XML, download the same way.
  • If your site's Uploads folder is an IIS virtual directory, add a VirtualDirectories entry for /Uploads to the site's Api appsettings.json. Without it, these downloads report that the file no longer exists.
Site-wide - Data Transfer and custom attribute files are no longer reachable by URL

Files under /Uploads/DataTransfer/ and /Uploads/CustomAttributes/ are no longer served to browsers or outside systems. Administrators download them from the Console instead.

  • Data Transfer imports and exports, and module custom attribute files, return "not found" when requested by URL.
  • An outside system that fetches a Data Transfer export by URL stops working. Move that feed to a secure destination such as SFTP, OneDrive or SharePoint.
  • An export configured outside /Uploads/DataTransfer/, such as /Uploads/Public/, stays reachable by URL until you move it.
  • Resized images under Uploads (/Uploads/.../photo.jpg/600/0/false/Image.ashx) keep working. Image.ashx now serves image files only.

web.config change

The sync updates the site's Root web.config:

  • It adds a locked <location path="Uploads/DataTransfer"> and <location path="Uploads/CustomAttributes">, each denying every file.
  • It adds a locked handlers section to <location path="Uploads"> and <location path="PrivateLabeling">. It maps Image.ashx to the image resizer and refuses every other .ashx file.

Check two cases after the sync:

  1. A web.config you placed in a folder under Uploads that sets handlers now fails for that whole folder (HTTP 500.19). Move those handler settings into the Root web.config.
  2. Custom code that links to a file under these two folders by URL must send administrators to the Console download instead.
Site-wide - the overwrite-protection upload handler refuses an upload that did not start from its dialog

The overwrite-protection upload handler, used by the file upload dialog and the Resource upload window when overwrite protection is on, now accepts an upload only from a dialog this site opened in the same session.

  • A request that does not carry the dialog's upload token is refused with 403 before any file is written.
  • The dialog and the Resource window send the token themselves; no setting changes.
  • Custom code impact: a custom page that sets Telerik_RadAsyncUpload_OverwriteProtection.ashx as its RadAsyncUpload handler must register an upload context in Page_Load (Centralpoint.Web.FormUploadContext.Register, kind file or resource) and send its token as ctx from its uploading script, or its uploads are refused after this update.
FormUpload CpScript - the Resource and bulk-upload windows accept uploads only from the form that opened them

The Resource upload window and the Bulk File Upload window of a FormUpload field now accept an upload only from the form that rendered the field.

  • A direct visit to either window, or an upload sent to its handler from outside the form, is refused with "This upload page must be opened from a form. Reload the form and open the upload window again."
  • Each field gets its own upload context when the form renders, so the roles, size limit, folder and file count come from the field's settings, not from the window's address.
  • Public forms with a Resource or bulk-upload field keep working for signed-out visitors.
  • A signed-in Console or Master user can still open either window by address.
  • A visitor who leaves a form open past the session timeout, 20 minutes by default, is refused and told to reload the form.
  • Custom code that opens /Modules/Forms/FileUpload/Resource.aspx or /Modules/Forms/FileUpload/TelerikBulkUpload/Default.aspx by address, without the FormUpload field, no longer works for a signed-out visitor.
Centralpoint Agent - ending a remote trace session no longer reopens Trace.axd

Centralpoint Agent 8.12.16.12 keeps Trace.axd local-only when a remote trace session started by Oxcyon support ends. The Agent restores the site's earlier trace setting, always with localOnly="true", so a session opened before this update cannot undo the site-wide trace fix.

Site-wide - Trace.axd answers only requests made on the server itself

Trace.axd now answers only requests made on the web server itself, on every site, so trace output is never readable from another machine.

  • Trace is turned off on the Development, Master and child sites.
  • Turning trace on from Development > Utilities still works. The output is readable only from a browser on the web server.
  • If a later deployment brings back a web.config that allows remote trace, the next sync closes it again.

web.config change

The update edits the <trace> element in each site's Root and Console web.config. It sets localOnly="true" and enabled="false".

  • A virtual directory that runs as its own IIS application has its own web.config, which the update does not touch. If it carries localOnly="false" on its <trace> element, set it to true by hand.
  • No assemblies, handlers or modules change, so custom code is not affected.
Centralpoint Agent and CLI - sign with the Master's own key, and new signing-key commands

Centralpoint Agent 8.12.16.11 and Centralpoint CLI 8.12.16.10 sign their calls to the Uber and the Master with the Master's own key once the Uber has accepted it.

  • New centralpoint signing-key show lists the fingerprint of each site's key on the server.
  • New centralpoint signing-key rotate --compromised replaces every key on the server after a security incident.
  • centralpoint install --enrollment-code installs a new Master with a one-time code from the Uber.
  • Both still fall back to the shared signing secret while the Uber accepts it for your Master.
Admin > Settings - shows this server's signing key fingerprint

Admin > Settings now shows a Signing Key Fingerprint below Windows Identity. It names this server and the fingerprint of its signing key. Compare it with the fingerprint in Server Hub before a key is approved there.

Site-wide - each server signs system calls with its own key, and the shared signing secret can be retired

Each Master and web site now signs its system calls with a key of its own, so one site's key can no longer act as another site.

  • Every server creates its own signing key the first time it runs this version. Updates, repairs and load-balancing copies keep each server's key.
  • Your Master registers its keys with the Uber, and keeps a list of its web sites' keys.
  • The shared signing secret still works on every site, so nothing changes until the Uber turns it off for your Master.
  • Admin sign-in now keeps its site type in a cookie protected by your site's own machine key. An administrator from the Master or Uber may be asked to sign in again once.
Development > Errors - request headers named like credentials are redacted

The Api no longer stores the value of a request header whose name looks like a credential in an error record.

  • Headers such as X-API-Key show as redacted on Development > Errors. The fixed list of redacted headers still applies.
  • Other headers are stored as before.
Site-wide - the Web API rejects the anonymous visitor's token unless an endpoint allows it

Every page load gives a visitor a Web API token, including anonymous visitors. Endpoints that list no roles used to accept that token. They now return 401.

  • Five Page Assistant endpoints still accept anonymous visitors on a Web Site: SummarizeText, GetCapabilities, ChatStream, DataSourceRender and RagRetrieve. Master and Uber never accept the anonymous token.
  • Admin-only endpoints now check the role: the RAG chunk, inspect and benchmark tools, the embedding test, and the Process Monitor (LimitedAdmins and Admins).
  • Signed-in users who are not Admins lose the RAG and embedding diagnostics on API > AI Test Center.
  • Word Add-In and other signed-in callers are unchanged. Custom code that calls the Web API with an anonymous token must sign in first.
API > API Keys - a key reads only the modules it is granted, and only Admins manage keys

A Web API key that has no module grants now reads nothing, and only the Admins role can manage keys.

  • /data/query returns data only from modules the key has a Query grant for. /data/files downloads only from modules the key has a Download grant for.
  • A key missing the grant it needs gets a 403 response. Before this release, a key with no grants read every module.
  • API > API Keys marks each key that has no module access, no query grants or no download grants. The create dialog says a new key reads nothing until you grant it modules.
  • Only the Admins role can open API > API Keys or call the key endpoints. LimitedAdmins and Developers lose this page.

Before you update: open API > API Keys and grant modules to every key in use. Give Query for /data/query and Download for /data/files. A key without the grant it needs stops working when the update installs.

Centralpoint CLI - installs generate their own machine key and Telerik dialog key

Centralpoint CLI 8.12.16.9 gives each new install its own machine key and Telerik dialog key.

  • The install writes new keys into the Master and Development web.config files. It no longer keeps the keys from the install package.
  • When the CLI cannot write the keys, it says so and the install goes on. Generate the keys afterward in Admin > Settings for the Development site, or Master > Admin > Settings for the Master.
Master > Content > Web Sites > Load Balancing - Verify checks that both servers share one machine key

Load Balancing Verify now compares the secondary server's machine key with the primary's. Configure copies the full key set.

  • Verify shows "Differs from the primary" when the keys do not match. It also flags a key that shipped with Centralpoint. It never shows a key value.
  • Configure copies the machine key and the Telerik dialog key to the secondary.
  • Windows data protection can encrypt the secondary's appSettings. The primary cannot read that section, so Configure copies the machine key only and reports that it did not copy the Telerik key. Copy the Telerik key by hand.
Master > Deployment > Web Sites - a new site gets its own machine key and Telerik dialog key

Creating a web site now gives the new site its own machine key and Telerik dialog key, not its parent's.

  • The new site no longer starts with the parent's keys.
  • The warning that asked you to generate keys by hand is removed.
  • When the parent's key section is encrypted, the update cannot rewrite it, and the new site keeps the parent's keys. The site's RotateKnownSiteKeys entry on the Sync Methods page shows that. You can then generate keys in the new site's Admin > Settings.
Master > Admin > Settings - the machine key is optional and the Telerik key is hidden

Master > Admin > Settings now saves on a master that has no machine key, and it hides the Telerik dialog key.

  • A master with no machineKey in web.config shows AutoGenerate. You can save other settings without entering a key, and Save leaves the key out of web.config.
  • Generate Keys no longer fails when the master has no Telerik dialog key.
  • The Telerik dialog key is a password box, like the machine key fields. Its value is not shown.
Admin > Settings - the machine key is optional and the Telerik key is hidden

Admin > Settings now saves on a site that has no machine key, and it hides the Telerik dialog key.

  • A site with no machineKey in web.config shows AutoGenerate. You can save other settings without entering a key, and Save leaves the key out of web.config.
  • Generate Keys no longer fails when the site has no Telerik dialog key.
  • The Telerik dialog key is a password box, like the machine key fields. Its value is not shown.
Site-wide - each site gets its own machine key and Telerik dialog key

Every site now runs on its own machine key and Telerik dialog key, so a key copied from another site no longer works.

  • The update replaces a key that shipped with Centralpoint, a key shared with another site on the same master, and keys that differ between two load-balanced servers.
  • A site that already has its own keys keeps them.
  • Users sign in again once after the update. Open forms and Word Autofill links fail once.
  • New sites and new installs generate their own keys. The shipped web.config no longer carries any key.
  • A key the update cannot rewrite is left as it is. An example is a Telerik key in an appSettings section that a provider other than Windows data protection encrypts. The Sync Methods page shows that site as partly done.

web.config change warning

What changes. In the Root web.config of each site, the update replaces validationKey and decryptionKey in <machineKey> and sets validation="HMACSHA256" and decryption="AES". It replaces the Telerik.Web.UI.DialogParametersEncryptionKey value in Local.config when the entry is there, and in the web.config appSettings when it is not. It touches the Root web.config and Local.config only. The Console is a nested application under Root and uses Root's machine key, so Console users sign in again too.

Check these after the update.

  1. A virtual directory that runs as its own IIS application and shares sign-in with the site through its own machineKey keeps the old key. Copy the new Root machine key into its web.config by hand.
  2. A second server that you load-balance by hand is not changed. Copy the Root machine key and the Telerik key to it right after the update. Otherwise the two servers reject each other's sign-in cookies.
  3. Custom code that shares forms tickets or MachineKey data with another application needs a new shared pair. Set the same pair by hand in both applications.

QC: after the update, open a page in each virtual directory that runs as its own application. Open a page in each custom application that shares sign-in with the site. Each page must load and accept the sign-in.

Master > Admin > Users - new and reset accounts get a set-password link instead of an emailed password

Creating a user or resetting a password on Master > Admin > Users now emails a link to set a password. The email no longer contains a password.

  • The link works once. It expires after 24 hours for a reset and after 72 hours for a new account.
  • A new reset replaces the earlier link.
  • A password changed any other way also retires an open link.
  • Trace output no longer includes the new password.
  • If the link cannot be sent, the page says so.

web.config change

The version's sync adds one location to the Master web.config: <location path="SetPassword.aspx"> with <allow users="*" />. This opens the set-password page without a sign-in.

  • A Master that runs as its own IIS application with a separate web.config that the sync does not touch needs the same location added by hand.
Members - new and reset accounts get a set-password link instead of an emailed password

Creating a member or resetting a password on Members now emails a link to set a password. The email no longer contains a password.

  • The link works once. It expires after 24 hours for a reset and after 72 hours for a new account.
  • A new reset replaces the earlier link.
  • A password changed any other way also retires an open link.
  • The Password placeholder in a custom email template now holds the link, so custom templates keep working.
  • If the link cannot be sent, the page says so.

web.config change

The version's sync adds one location to the Console web.config: <location path="SetPassword.aspx"> with <allow users="*" />. This opens the set-password page without a sign-in. It adds nothing to the Root web.config.

  • A Console that runs as its own IIS application with a separate web.config that the sync does not touch needs the same location added by hand.
Site-wide - Console and Master sign-in lock a username for 15 minutes after 10 failed attempts

The Console and Master sign-in pages now lock a username for 15 minutes after 10 failed attempts in a row.

  • During the lock, even the correct password is refused with "Too many failed sign-in attempts. Try again in 15 minutes."
  • The count is kept per username, so a name that does not exist locks the same way.
  • A successful sign-in clears the count. The count also resets after 15 minutes with no attempt.
  • Setting a new password from a set-password link clears the lock.
  • A site that turned on member lockout in its properties now has that lockout apply to Console sign-ins too.
  • If the lockout table is missing, sign-in works as before.
Admin > Global Login - SAML sign-in now verifies the identity provider's certificate against a pinned thumbprint

SAML sign-in now checks the identity provider's signing certificate before anyone is signed in, for any Global Login record that has a certificate pinned, closing a hole where a response signed by any certificate was accepted.

  • When SAML Use Embedded Certificate = Yes, the certificate in the sign-in response must match a thumbprint in the new SAML Trusted Certificate Thumbprints field on the Global Login record (SHA-1 or SHA-256, separate multiple with commas), or the uploaded SAML Partner Certificate File.
  • When SAML Use Embedded Certificate = No, the response is verified against the SAML Partner Certificate File as before.
  • A record with no thumbprint and no certificate file still signs users in, exactly as before, and is listed in a report so you can secure it. It is not blocked.
  • Saving a new Global Login record with Use Embedded Certificate = Yes and no thumbprint and no certificate file is refused. An existing unpinned record can still be edited and saved, and stays in the report until you pin it.

What to do

  • After your identity provider rotates its signing certificate, update the thumbprint on any record that has one pinned, or sign-in for that record will fail until you do.
  • If a record uses a SAML Partner Certificate File and was set to accept unsigned responses, confirm your identity provider signs its responses: an unsigned response to a record with a certificate file is now rejected.
  • Review the report of records that still need a certificate and pin the suggested thumbprint for each. Until you do, that record keeps signing users in without checking the certificate.
Development > Query Analyzer - saved queries are signed, and the Uber rejects a request that changes

Development > Query Analyzer now signs every request that saves, lists or deletes a saved query.

  • The signature covers the user and the query being saved, listed or deleted. A changed request fails the check.
  • The Uber accepts an unsigned request until its Uber Utilities Require Signature property lists QueryAnalyzer.
  • Saved queries keep working on a site that has this update.
Site-wide - your site signs every call to the Uber and UberControl

Your site, the Master and UberControl now sign every call they make to the Uber and to the parent UberControl.

  • The signature uses the same JWT.Signing.Key.Secret as the Console service signing. A call from a site on an older version carries no signature.
  • The Uber and UberControl serve an unsigned call for now and record it. Only update uploads to the Uber need a signature.
  • Custom code that builds its own Uber.Utilities or UberControl.Utilities proxy sends unsigned calls. Change it to SignedUberUtilities or SignedUberControlUtilities.
  • A custom page in Integrations that declares the Uber proxy as Uber.Utilities must declare Centralpoint.Web.Uber.Utilities instead, or it keeps its own unsigned proxy.
Development > Web API - methods set to Security Mode Disabled now require an Access Token

Every Development > Web API method set to Security Mode Disabled now uses Access Token, so a caller without a token gets 403 Invalid Access Token.

  • cp-interstitials stays Disabled, because the interstitials feature calls it without a token.
  • The Development site switches during the update. QA and Production sites switch at their next sync from the parent.
  • Integrations, scheduled tasks and custom code that call a switched method must send an access token over HTTPS.
  • Each site writes the methods it switched to Backups\WebApiSecurityModeHold-<date>.csv in the site's folder.
  • To keep a method public, set its Security Mode back to Disabled. The update does not switch it again.
Site-wide - Media Manager inserts mp4 video and mp3 audio into the editor again

Inserting an mp4 video or mp3 audio file from the editor's Media Manager works again in every module that uses the rich text editor.

  • After a recent update to the editor, Media Manager started creating modern video and audio players for these files. The older code that prepared inserted media did not recognize them, so clicking Insert closed the window and nothing was added.
  • Video and audio files now insert as a player you can preview in the Design view and save with the record.
  • Other file types insert from Media Manager the same as before.
Site Architecture > Search Page Designer - each saved page is excepted from the Uploads script block

Saving a search page now lets that page run from the Uploads folder, and deleting it removes the exception, so saved pages keep working under the new Uploads script block.

  • Existing saved pages get their exception when the update runs.
  • Another .aspx file in the same folder stays blocked.
  • If the site web.config cannot be written, the save shows a warning, and the page returns a 404 until a save succeeds.
  • On a load-balanced site, a save writes the primary server's web.config only. To reach the secondary server, run BlockHandlerFilesUnderUploads again from Master > Development > Sync Methods.
Site-wide - script files in Uploads no longer run (security change, custom pages may need an exception)

Script files in the Uploads folder no longer run on any site, so a file written there cannot execute. This is a security change.

  • Blocked: .aspx, .ashx, .asmx, .svc, .asp, .cshtml, .vbhtml, .php, .axd, .rem, .soap, .xamlx, .xoml, .rules, .asa, .cer, .cdx, .idc, .shtml, .shtm and .stm. The same block covers the /PrivateLabeling folder.
  • Not affected: images, .js, .css, .pdf and other static files, and module views under Uploads/ModuleViews.
  • Product pages that live in Uploads keep working: Sync Notes, Gist and File Picker on the Development site, the Utility page on Master, and every Search Page Designer page.
  • Pages or web services that your own custom code placed in Uploads now return a 404. We expect a few. We fix each one as it surfaces with a one-file exception, and we do not reopen the folder.
  • The Master Errors list shows one report per install. It names every blocked file, every file an exception still serves, and every web.config under Uploads.

web.config change warning

The update edits the Root web.config of Master and of each site, including a registered secondary server. It adds a <location path="Uploads"> block and a <location path="PrivateLabeling"> block. Each block removes, then denies, the blocked extensions in requestFiltering. The block is locked, so a web.config under Uploads cannot allow them again. It also adds one exact-file <location> for each excepted page.

  • A virtual directory that runs as its own IIS application has its own web.config, which the update does not touch. Check that script files in it are still blocked, or add the same block by hand.
  • Custom code: a web.config under Uploads that sets requestFiltering (for example maxAllowedContentLength) now returns 500.19 for its folder. Move that setting into the Root web.config. A server whose applicationHost.config locks requestFiltering also returns 500.19 under Uploads, so check that before you update.
  • QC step: load one page of your own custom code under Uploads. Confirm it works through an exception or returns 404, and that no folder under Uploads returns 500.19.
Tools > Extract Sharepoint Documents - saves files only inside the parent folder, and only the selected file types

Tools > Extract Sharepoint Documents now saves files only inside its Parent Folder under Uploads, and only with the file types you select.

  • A Parent Folder Name that points outside Uploads, such as ..\Files, is refused before the extract starts.
  • A file whose folder or name from your query leads outside the Parent Folder is skipped.
  • A file whose type is not selected under Extensions To Retrieve is skipped, even when your query returns it.
  • The result shows how many files were skipped.
  • You must select an extension before the extract runs.
  • An error now shows only its message, without technical details.
Development > Utilities - each utility opens only for users who hold its navigation item

A utility on Development > Utilities or Development > Import Utilities now opens and runs only for users who hold that utility's navigation item.

  • The page shows the panel that its navigation item names. A display value in the address no longer opens a different panel.
  • Utilities.aspx?format=3 now needs a navigation item like any other Console page.
  • The actions behind each panel, such as Restart Web Site and Database Backup, check the same navigation item.
  • A link that used format=3 stops working. Use the navigation item's own link.
Admin > Properties - new Console Utilities Require Signature property, logs unsigned Console service calls

The Master and your site's front end now sign every call to the Console Utilities service, and the Console checks the signature.

  • New property Console Utilities Require Signature in Admin > Properties. It is No by default.
  • When it is No, the Console still serves an unsigned call and records it in Development > Errors as ConsoleWebServicesAuth:Unsigned, with the caller's address and the likely cause.
  • When it is Yes, the Console refuses unsigned calls.
  • Choose Yes once the error stops appearing. Leave it No while an outside system still posts to the service, because that system cannot sign.
  • Custom code that builds its own Console.Utilities proxy sends unsigned calls. Change it to SignedConsoleUtilities.
  • The Master and the site must use the same JWT.Signing.Key.Secret value. If they differ, every call is recorded as unsigned.
Site-wide - Console web methods refuse callers who are not signed in to the Console

Console web methods now run only for a signed-in Console user who has access to at least one audience.

  • This covers the Console ClientMethods service (Toolbox, CpEditor filters, Webhooks, Data Triggers, Data Transfer restore and Change Upload Directory), the SolrExport service, the Form Wizard service, and the methods behind each Console page.
  • A method behind a Console page also needs the navigation item of that page.
  • Any other caller gets an error, and the method does no work. A Console page you can open keeps working.
  • Warning: anything that called one of these methods without a Console session stops working. Client custom code is the most likely case. We fix each case one at a time as it appears, and we do not reopen the gap.
  • Calls to the Console Utilities service are not affected by this change.
ExtChangeValueOnJavascriptAction CpScript - requires sign-in unless allowed in Admin > Properties

The ExtChangeValueOnJavascriptAction CpScript now does nothing for visitors who are not signed in, unless an admin allows them.

  • It saves through the same service as the check-in button, so it follows the same setting: Check In Button (ButtonClick, ButtonClick_v2) in Admin > Properties > Anonymous Client Methods.
  • Before, signed-out visitors on a page using it saw an error popup, because the server already refused them.
  • The same field rule applies: only an admin can set Roles, Audiences, IsEnabled, StartDate or EndDate through it.
FormAutoSave CpScript - signed-out visitors cannot set who sees a record, and errors no longer show details

The FormAutoSave CpScript now refuses a signed-out visitor's save that sets Roles, Audiences, IsEnabled, StartDate or EndDate.

  • The message "This form cannot set that field." appears next to the checkbox, and nothing is saved.
  • When a save fails for any reason, the form now shows "Error" instead of technical details about the server.
  • Signed-in users, and forms that set other fields, see no change.
CheckInButton CpScript - only admins can change who sees a record through check-in

The CheckInButton CpScript can no longer change the fields that decide who sees a record, unless the user is an admin.

  • A check-in that sets Roles, Audiences, IsEnabled, StartDate or EndDate is refused and nothing is saved.
  • Check-ins that set other fields, such as a Yes/No or text field, work as before.
  • This also applies when Check In Button (ButtonClick, ButtonClick_v2) is selected for signed-out visitors in Admin > Properties > Anonymous Client Methods.
Development > Web API - upserts no longer move records from other modules, and DeleteData requires a module

Web API methods now change only records in the module they are set up for.

  • UpsertData and Upsert Data From Site On Same Server no longer move or change a record from another module when a request names its DataId. The item is skipped with the warning "the provided DataId is not available".
  • Upserts by DataId, AutoNumber or IntegrationId in the method's own module work as before.
  • Breaking change: a DeleteData method with no DeleteData Module now returns "DeleteData Module Required" and deletes nothing. Open each DeleteData method in Development > Web API, choose its module and save. The field is now required on the form.
Centralpoint Agent - event log captures can read the Setup log and skip event sources you exclude

Centralpoint Agent 8.12.16.10 reads the Windows Setup log and skips the event sources you name when it captures an event log.

  • A Setup log capture shows Windows servicing installs, so you can tell when Windows patched a server.
  • A capture can name up to 10 event sources to leave out. Their events no longer use up the capture's event limit.
  • A source name that contains & or ' now matches. It matched nothing before, for the source filter as well.
  • A capture that asks for the Information level now also returns events that Windows logs with no level, which Event Viewer shows as Information. An "All levels" capture of System or Application can therefore reach its event limit sooner.
  • The Security log is still not available to the Agent.
UserSubscriptions CpScript - favorites, subscriptions and votes save only on records the user can see

The UserSubscriptions CpScript now saves a favorite, subscription or vote only on a record the signed-in user's roles allow them to see.

  • A request for a record hidden from the user by its roles is refused, and nothing is saved.
  • Admins are not affected.
  • Users saving favorites, subscriptions and votes on records they can see notice no change.
DesignSwitch CpScript - switching designs requires sign-in unless allowed in Admin > Properties

The DesignSwitch CpScript now switches the design only for signed-in users, unless an admin allows signed-out visitors.

  • Breaking change: the OverrideAuthenticatedUsers attribute alone no longer shows the dropdown to visitors who are not signed in. They see an alert naming the site property until an admin allows it.
  • To allow signed-out visitors, go to Admin > Properties, find Anonymous Client Methods, select Design Switch (ReturnDesignSwitchOptions) and save. Picking a design changes it for every visitor to that audience.
  • A switch now applies only from the design the audience is currently shown, to an enabled design that is not tagged to All Audiences.
  • Picking the design that is already shown no longer saves anything.
FormAutoSave CpScript - auto save requires sign-in unless allowed, and saves only the form's own records

The FormAutoSave CpScript now saves only for signed-in users, unless an admin allows signed-out visitors.

  • Breaking change: visitors who are not signed in no longer see the Auto Save checkbox, and the server refuses their saves.
  • To allow signed-out visitors, go to Admin > Properties, find Anonymous Client Methods, select Auto Save Form (FormAutoSave) and save. A signed-out visitor can then keep saving only the record their own visit created.
  • Auto Save no longer overwrites an existing record from another module, or one the user's roles hide. The message "This record cannot be saved from this form." appears next to the checkbox instead.
  • Signed-in users saving their own form see no other change.
CheckInButton CpScript - check-in requires sign-in unless allowed in Admin > Properties

The CheckInButton CpScript now saves only for signed-in users, unless an admin allows signed-out visitors.

  • Breaking change: visitors who are not signed in no longer see the button, and the server refuses their clicks. Custom pages or integrations that call the check-in service without signing in are refused too.
  • To allow signed-out visitors, go to Admin > Properties, find Anonymous Client Methods, select Check In Button (ButtonClick, ButtonClick_v2) and save. Selecting it lets anyone change that value on any record visitors can see.
  • The button now saves only on records the user's roles allow them to see. Admins are not affected.
  • Signed-in users see no other change.
FormKeywordManager CpScript - Add New requires sign-in unless allowed in Admin > Properties

The FormKeywordManager CpScript's Add New service now requires sign-in, the same as its Create button, unless an admin allows signed-out visitors.

  • Breaking change for custom code: a custom page or integration that calls the Add New service without signing in is now refused until an admin allows it. The picker's Create button was already disabled for signed-out visitors, so picker users see no change.
  • To let signed-out visitors add keywords, for example on a public form, go to Admin > Properties, find Anonymous Client Methods, select Keyword Picker: Add New Keyword (CreateNewKeywords) and save. The Create button is then enabled for them. Selecting it lets anyone add keywords to any keyword list on the site, not only the list the form shows.
  • Anonymous Client Methods is a new property that lists front-end services that change data. Each one requires sign-in unless you select it here. Later releases will add more services to this list, and each release that adds one will say so.
  • Keywords with an apostrophe, such as O'Brien, are now saved with a single apostrophe.
UserSubscriptions CpScript - favorites, subscriptions and votes save only for the signed-in user

The UserSubscriptions CpScript now saves favorites, subscriptions and votes only for the signed-in user who clicked them.

  • Visitors who are not signed in, and ancestor admins, can no longer save one. The button already showed them an alert, and the server now refuses them too.
  • A request that names a different user is refused, so no one can save a favorite, subscription or vote for someone else.
  • Votes accept only the up and down values the button sends.
  • Voting the same way twice no longer shows an error, and a favorite, subscription or vote can no longer be saved for a record that does not exist.
  • Signed-in users see no other change: saving and removing work as before.
Procedure Manuals > Policies - locked documents stay closed when Prevent Download if Locked is on

The Policies Word download now honors the PreventDownloadifLocked property.

  • With the property on, a locked policy document is refused instead of opening.
  • A missing document is refused instead of failing later in the download.
  • A version link opens only a version of the same document.

With the property off, downloads work as before.

Api > Data - Data API queries and file downloads no longer return Web API records

/data/query and /data/files no longer return Web API records, which hold credentials.

  • This applies to every API key, including a key granted access to the Web API module.
  • Queries for every other module return the same results as before.

If an integration reads Web API records through the Data API, it now gets no rows for them.

Development > Web API - form auto-save, document tools and the Word add-in can no longer read or change Web API records

Web API records hold credentials, so more site features now treat them as not found.

  • The FormAutoSave CpScript, keyword fields, version restore links and the design switch cannot save over a Web API record.
  • The DocCreation document builder, the ModuleResults zip export and DataDiffs history skip Web API records.
  • The Word add-in cannot open, lock or save a Web API record.
  • FormAutoSave in review mode and Word add-in saves accept only a version of the record being edited.

Normal records work as before.

Master > Development > Health Monitor - differential backups show their backup type

The backup history in Master > Development > Health Monitor now labels differential backups as Differential instead of leaving the type blank. Azure SQL Managed Instance takes differential backups on its own schedule, so they appear often there.

Master > Development > Sync Methods - the SQL Server 2025 features method completes on Azure SQL Managed Instance

On Azure SQL Managed Instance, the SQL Server 2025 features sync method completes as not applicable instead of failing. Azure manages those server settings there. SQL Server installs run it as before.

Master > Content > Scheduled Tasks > DatabaseMaintenance - runs cleanly on Azure SQL Managed Instance

Database maintenance runs without errors on Azure SQL Managed Instance and skips the steps Azure manages.

  • On a Managed Instance, maintenance updates space usage, then stops. Azure controls the recovery model and log backups there.
  • The daily warning about a large transaction log no longer appears on a Managed Instance, where nobody can act on it.
  • Site and Master databases can again be exported to a BACPAC file with SqlPackage.

Other SQL Servers run the same maintenance as before.

Centralpoint Agent and CLI - Azure SQL Managed Instance support, and installs cap SQL memory on a shared server

Centralpoint CLI 8.12.16.8 and Centralpoint Agent 8.12.16.9 can install and manage a Centralpoint site whose databases run on Azure SQL Managed Instance.

  • The CLI detects a Managed Instance and encrypts every connection to it. It checks the server certificate first, and asks before trusting a self-signed certificate on an on-premises SQL Server.
  • On a Managed Instance, the CLI skips the steps Azure manages: SQL folder prompts, server settings and database file layout. Databases are imported from the install package, not from a local backup file.
  • The installer account on a Managed Instance needs dbcreator, ALTER ANY LOGIN and VIEW SERVER STATE, not sa.
  • On any SQL Server that shares the web server, a new install caps SQL Server's maximum memory at 60% of the server's memory when it is still unlimited.
  • The Agent reports a Managed Instance as one and does not try to change its memory setting.
Development > Web API - page buttons and keyword fields can no longer read or change Web API records

Web API records hold access tokens and passwords, so the site's button and keyword services now treat them as records that do not exist.

  • The CheckInButton and ExtChangeValueOnJavascriptAction CpScripts can no longer change a Web API record, or save any record into the Web API module.
  • Keyword Manager fields can no longer read a value from a Web API record.
  • Buttons and keyword fields on every other record work as before, including custom code that calls the button service directly.
Site-wide - multi-tenant audience filtering loads faster on large modules

Sites using Multi-tenant Audiences filtration (Admin > Properties > Audience Filtration and Security) load module results, searches and listings faster on large modules.

  • The TenantsA and TenantsB checks look up each record directly instead of reading the full tenant list for every row.
  • Which records each user sees does not change: untagged content stays visible to everyone, and tagged content shows only to users in a matching tenant.
  • Custom tenant providers that call the built-in tenant filter get the same improvement with no code change.
Site-wide - paged results, search and Console lists load faster on large modules

Paged lists across the site open each page faster on modules with many records or large text fields, such as rich text or extracted document content. This covers module results pages, site search and Console module lists.

  • The page of records is chosen first, then only those records' full content is loaded.
  • Results, sort order and record counts do not change.
  • Lists that use a window function or a wildcard field list in their fields keep the previous query.
Development > Web API - request filters and sorts can only read their own rows, and live sites hide database errors

Web API methods now refuse a request Filter or sort that could read other data, and a live site no longer returns database error text.

  • A Filter on Read Details, Read Results or Get Users that contains a subquery or a database function call, such as dbo.IsInRole(...), returns a 400: "Filter cannot contain a subquery or a database function call." Invalid Filter is now a 400 too, instead of a 200.
  • A Read Results OrderBy must be a list of columns, each with an optional ASC or DESC. A DataTables OrderByDirection must be ASC or DESC, and a sort header the grid did not show is ignored.
  • With debugging off, a server error returns "The server could not complete this request. Reference: " and the full error goes to Development > Errors. Errors caused by the request itself keep their message.
  • A custom method that throws an ArgumentException returns a 400 with its message instead of a 500. A plain Exception still shows its own message; any other exception returns the message above.
  • DataTables encodes [cp:placeholders] values before using them in DataTablesWhere. Keep a placeholder inside quotes. One outside quotes, or inside a LIKE pattern, is not protected.
Development > Web API - broken JSON gets a 400 on every method, and stack traces show only with debugging on

Development > Web API answers two kinds of errors more clearly and gives away less.

  • A request whose JSON is broken, for example cut off partway, now gets a 400 with "The request is not valid JSON." on every method, instead of a 500 with a technical parser message.
  • Errors from Process Log, Error Log, Natural Language Search and custom code methods include the stack trace only when debugging is on. A live site returns the error message without it, the same as the other methods.
Master > Development > Process Log - opening a run checks its ID before the lookup

Opening a run in Master > Development > Process Log now checks that the run's ID is valid before looking it up, so only a real ID ever reaches the database. The page looks and works the same.

Development > Process Log - opening a run checks its ID before the lookup

Opening a run in Development > Process Log now checks that the run's ID is valid before looking it up, so only a real ID ever reaches the database. The page looks and works the same.

Development > Web API - added Process Log and Error Log methods that return the site's own runs and errors

Development > Web API has two new methods, Process Log and Error Log, that return this site's process runs and errors as JSON.

  • Both return only the calling site's records. Nothing in the request can widen that.
  • Process Log filters by Type, HasErrors and Since, and IncludeSteps adds each run's steps. Send a ProcessId to get one run with its steps and errors.
  • Error Log filters by Since. Send an ErrorId to get one error with its stack trace and page details.
  • Both page with PageIndex and PageSize, up to 200 per page.
  • Both are for admins only. Set Security Mode to Access Token and User Mode to Access Token User, and use a token whose user is in the Admins role. Any other setup gets a 403 that says what to change.
  • Error Log is not available on isolated installs.
  • A request that is not valid JSON now gets a 400 instead of a server error, on these methods and on Natural Language Search.
FileViewer CpScript - Excel Viewer performance update with faster sheet load times

The Excel Viewer opened by the FileViewer CpScript loads each sheet with one request and reads only the selected sheet of the workbook.

  • Sheets with few rows in a large workbook open about 8 to 20 times faster.
  • Sheets over 5,000 rows open 15 to 30 percent faster. They still show the first 5,000 rows and the full row count.
  • Switching sheets quickly shows the sheet picked last.
  • Merged cells that reach the 5,000-row limit end on the last shown row instead of one row short.
  • A damaged cached copy of a workbook is rebuilt instead of showing a partial sheet.
Site-wide - third-party libraries updated

Two third-party libraries are updated to their latest patch releases:

  • System.DirectoryServices 10.0.13, used by the API, the Centralpoint Agent and the Centralpoint CLI.
  • marked 18.1.1, used to display formatted text in the AI and API pages.
Site-wide - file copies during updates, patches and repairs stop at once when the source file is gone

When a file is deleted while an update install, patch, repair or Data Update is copying it, the copy now stops for that file at once.

  • The file already in place is left untouched, instead of being renamed aside and back on each of three retries.
  • The missing file is still listed in the result.
  • A copy blocked for any other reason still retries as before.

This ships in Centralpoint Agent 8.12.16.8 and Centralpoint CLI 8.12.16.7, and in the Master update install and Data Update.

Development > Errors - error details show the search query and repeated log entries

Error entries in Development > Errors carry more of what is needed to find the cause.

  • A failed site search records the search query it ran, even when site logging is off.
  • A canceled request no longer records a site search failure.
  • Repeated log entries in an error's details show as a list instead of a type name.
  • Scanner probes against the file upload handler are grouped with other invalid requests.
  • Query timeouts from background work, and a relation population failure on document data, are grouped and labeled more precisely.
AI Governance > NLS Configuration - clearing a large index finishes instead of timing out

Clearing or rebuilding a large Contextual Search index now deletes its stored search rows in batches, so the clear finishes instead of failing on a time limit.

Api > WordAddIn - required relation fields load in one query

The Word add-in now loads a module's required relation fields in a single database request instead of one per relation, so it opens faster on modules with many relations.

Api > Data - Contains, Starts With and Ends With filters treat %, _ and [ as plain characters

The Data API's Contains, Starts With and Ends With filters, and its attribute Contains filter, now match the value literally. A filter value with %, _ or [ no longer returns records it should not.

Site-wide - Contextual Search query suggestions treat %, _ and [ as plain characters

Contextual Search query suggestions now match the typed text literally, so %, _ and [ no longer act as wildcards and no longer return unrelated suggestions.

Development > Query Analyzer - data source and query search treat %, _ and [ as plain characters

The search boxes in the Query Analyzer's data source, query and report lists now match the typed text literally, so %, _ and [ no longer act as wildcards.

ResourceDragAccordion CpScript - search by name or group treats %, _ and [ as plain characters

The ResourceDragAccordion CpScript's name and group search now matches the typed text literally. A name such as file_1 no longer also matches file11.

Site-wide - autocomplete suggestions treat *, %, _ and [ as plain characters

Typing *, %, _ or [ into an autocomplete now searches for that character, instead of treating it as a wildcard.

  • The site search autocomplete no longer returns an empty list when the typed text contains * or % in the middle, such as te*x.
  • Module autocomplete fields that search with SQL LIKE return only literal matches.
Site-wide - a page with no navigation item no longer fails while building its navigation

A page that has no navigation item behind it, such as a custom page reached by its own URL, now loads instead of failing with an error. The navigation groups and the content filter treat such a page as having no navigation item.

Site-wide - Console module lists retry an interrupted read and accept quoted column aliases
  • A Console module list whose read is interrupted by SQL Server while data moves underneath it now retries, the same way it already retries a deadlock, instead of showing an error.
  • A list column configured with a quoted or bracketed alias, such as [Title] AS 'Page Title', now displays and sorts correctly.
Site-wide - the unused Telerik ChartImage.axd handler is removed from web.config

The update removes the ChartImage.axd handler from the site and Master web.config files. The current Telerik version no longer includes it, so every request to it failed with an error.

web.config change. This line is removed from <system.webServer><handlers> in the site Root\Web.config (primary and secondary servers of a load-balanced site) and the Master Web.config:

<add name="ChartImage.axd" path="ChartImage.axd" verb="*" type="Telerik.Web.UI.ChartHttpHandler, Telerik.Web.UI, ..." />
  • A virtual directory that runs as its own IIS application keeps its own web.config. Remove the same line there by hand if it is present.
  • Custom code that still draws charts through Telerik RadChart and ChartImage.axd was already failing, and needs a different chart control.
Design > File Manager - uploads up to the 1 GB the uploader allows are accepted

The File Manager now accepts uploads up to 1 GB, the size its uploader already allows. Before, a file over 4 MB failed with "Maximum request length exceeded."

web.config change. The update adds this block to the Console web.config (Console\Web.config) on the primary server:

<location path="FileManager.aspx">
  <system.web>
    <httpRuntime maxRequestLength="1048576" executionTimeout="3600" />
  </system.web>
  <system.webServer>
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="1073741824" />
      </requestFiltering>
    </security>
  </system.webServer>
</location>
  • A value already higher than these is kept.
  • A virtual directory that runs as its own IIS application has its own web.config, which the update does not change. If it hosts the File Manager, add the same block there by hand.
Master > Content > Scheduled Tasks - late-task warnings use the scheduled time, and the forecast covers following tasks
  • The "Scheduled task is running late" warning now measures from the time the task was scheduled for, so a task that runs on time after an update install is no longer reported as late.
  • The Forecast view now estimates the run time of a task set to run after another task (Following) from that task's own history.
Master > Content > Scheduled Tasks > CleanUp - the API logging step deletes API log records older than 30 days

The CleanUp task now deletes API log records older than 30 days, which it had not been doing, so the API log no longer grows without limit.

  • The logging records that step already removed are still kept to 30 days.
  • A first run on a large API log deletes it in batches, over several nights if needed, so one run never holds the database for long.
Master > Content > Scheduled Tasks > DataUpdate - failures name the path, the account and the connection error

A failed Data Update now says what failed in terms you can act on.

  • A failed Source Local Path check names the path it tested and the Windows account it tested it as.
  • A failed source database check includes the connection error behind it, such as a refused login or a server that cannot be reached.
  • Every other Data Update failure keeps the cause of the error it wraps.
Data Transform > Data Transfer - Delimited Text sources retry a file that is briefly missing or locked

A Delimited Text transfer now waits for a source file that its feed is rewriting, instead of failing the run.

  • When the source file is missing or locked by another program, the transfer tries again up to three times, 15 seconds apart. The status shows each attempt.
  • A source folder that does not exist, or any other open error, still fails the run at once.
  • A preview in the Console never waits. It fails at once as before.
  • A Standard Module transfer that fails before it locks its module no longer runs its end-of-run steps, so it cannot disturb another run of the same module.
Design > Data Sources - Excel File templates can use CpScripts in the data row

The Excel File display in Design > Data Sources now resolves CpScripts placed in the template's data row once for each data row, alongside the existing {Column} placeholders.

  • A Column CpScript in a data row cell fills that cell from the current row, so removeMarkup, replaceText and the other Column properties apply to Excel exports. Example: Column: Object reference not set to an instance of an object..
  • Attribute values can be read with name='cpsys_Attributes:SystemName', so the query only needs to return the Attributes column instead of extracting each value in SQL.
  • A page-level CpScript placed in the data row, such as CurrentDate, now repeats on every row instead of appearing only on the first.
  • Templates that use only {Column} placeholders export as before.
ContextListFilter CpScript - the Default property is checked as the quoted value it becomes

The ContextListFilter CpScript now checks its Default property as the quoted value it becomes in the filter.

  • Ordinary text, including [ and ", is accepted as before.
  • A Default that would end its quotes early and change the filter is rejected with the alert "The 'default' property must keep its quotes and parentheses balanced."
  • A Default holding its own list, such as a', 'b, still works.
Site-wide - SQL filters typed into settings check parentheses inside bracketed and quoted names

SQL filters typed into settings now read parentheses inside [bracketed] and "quoted" names the way SQL Server does.

  • A filter can no longer use a parenthesis inside a bracketed or quoted name to reach outside the condition it belongs to.
  • Filters that use bracketed or quoted names normally, such as [Course Code] = 'a', keep working.
  • A filter with an unclosed [ or " is now rejected with a clear message instead of failing as a SQL error.

This applies wherever an administrator types a filter, such as Data Transfer source where clauses and CpScript filter attributes.

Site-wide - error details and emails hide credentials sent as headers, Bearer tokens or JSON

Error details, the Process Log and error emails now also hide credentials that a vendor echoes back as a header, a Bearer token or JSON.

  • Header values such as X-Api-Key: and X-Auth-Token: show as ***REDACTED***.
  • Authorization: Bearer and Basic tokens are hidden, and the scheme name stays. For Digest and similar schemes, the whole header value is hidden.
  • JSON values such as "api_key": "..." and "access_token": "..." are hidden, and the JSON stays valid.
  • accesskey= values and Azure storage sig= values are hidden.
  • A task setting whose name ends in AccessKey or Authorization is hidden in notification emails.
  • JSON data transfer errors now hide header and JSON credentials too, which an earlier note listed as not yet redacted.
  • A phrase that only looks like a header, such as api_key: required, also loses the word after the colon.
Design > Data Sources - a failed JSON export returns an error status in HTML error mode

A JSON Output export of a data source that fails now returns HTTP status 500 when JSON Output Error Format is HTML (default).

  • The error message still shows on the page.
  • Tools or scripts that call the export link and treated any 200 as success now see the failure.
  • Exports set to the JSON error format are unchanged. They already returned 500.
  • Check any custom code or integration that reads an export in HTML error mode and relies on a 200.
Master > Content > Scheduled Tasks > ClicksManager - optional retention for the clicks log

The clicks scheduled task can now remove old clicks log rows on a schedule, through a new Clicks Log Retention setting.

  • The job is now Manage Clicks (ClicksManager). Existing ClicksMerger tasks move to it and keep their settings.
  • Clicks Log Retention defaults to 0, which keeps every click. Any other value removes clicks log rows older than that many months.
  • Ad banner clicks and the newest click are always kept.
  • Each URL's clicks Total is reduced by the clicks removed, and a URL with no clicks left is removed. Reports that count the clicks log directly, such as Most Popular, then count only the clicks that remain.
  • Removal needs an index on the clicks log's CreateDate. Smaller sites get it with the update. On a large site, the first run with retention on builds it instead of removing anything, which can take some time.
  • Each run stops removing rows 20 minutes after it starts, so a large backlog clears over several runs.
  • Merging Query String Variable Names now ignores extra spaces and line breaks.
Master > Content > Scheduled Tasks > UpdateInstall - waits for a running patch before installing

An update install now waits for a running patch to finish, so the two never change the server's files at the same time.

  • This applies to the UpdateInstall scheduled task and to installs started from Master > Deployment > Updates.
  • The install waits up to 5 minutes. If the patch is still running after that, the install skips that run, and the next scheduled run installs the update.
  • The protection starts with the update installed after this one.
Centralpoint Agent - patches wait for a running update install

Centralpoint Agent 8.12.16.7 no longer starts a patch while an update install is running on the server.

  • If an install is running, the Agent leaves the patch untouched. Server Hub sends it again 15 minutes later.
  • While a patch runs, an update install waits for it to finish before it starts.
  • A patch built to carry its binding redirects forward still applies them to Master/Root/web.config after the server moves past the patch's version. A redirect is applied only when the matching DLL in Master/Root/Bin has the same version.
  • If none of those redirects can be applied, the patch reports a failure in Server Hub.
Development > Web API - Web API methods never read or change Web API records

Web API methods no longer return, change or delete the Web API records themselves, which hold method settings and stored credentials.

  • Read Details, Read Results and DataTables answer as if a Web API record does not exist, whether it is asked for by DataId, Filter or module.
  • Upsert Data skips an item aimed at a Web API record ("not available"), Delete Data reports it as not existing, and Upsert Data From Site on Same Server skips it.
  • A request Filter that contains --, ; or /*, or whose parentheses do not balance (even inside quotes), now returns Invalid Filter.
  • A Read Results method set to a table name with an alias, hint, database prefix, subquery or comma list on a record table now returns ReadResults Table Not Allowed. Use the plain table name.
  • A method set to the Web API module itself now returns a "Module Not Allowed" error.
Site-wide - one-way web methods no longer write trace messages

A refused or failed one-way call no longer risks ending the worker process on a site with trace on.

  • Affected: the cache methods RemoveCache and RemoveMemoryCache, and the data transfer, retention policy, NLS and PDF queue one-way methods.
  • These methods write no trace messages. Their requests usually leave no row in Trace.axd.
  • Refusals are still logged as errors.
Centralpoint Agent and CLI - repair keeps the Master signing proof file

Centralpoint Agent and CLI 8.12.16.6 keep the Master's App_Data/AgentSignedProof.txt file when they repair an install.

  • A CLI repair no longer overwrites the file.
  • The Agent has no other change in this version.
Master > Utilities web service - signed-call enforcement survives an app restart

A Master that enforces signed calls keeps enforcing after its app restarts.

  • Master saves the time of the last correctly signed Agent call in App_Data/AgentSignedProof.txt.
  • After a restart, Master reads the file and enforces at once. Before, it served unsigned calls for up to ten minutes.
  • A missing, damaged or expired file, or a changed JWT.Signing.Key.Secret, means no proof. Master then behaves as it did before.
  • The file belongs to each install. Sync, a full install and a repair leave it alone.
Development > Web API - added an AceProject Issues method that returns open issues per user

Development > Web API has a new AceProject Issues method that returns open AceProject issues per user as JSON.

  • Each endpoint signs in with its own AceProject login, so callers see only what that login can see in AceProject.
  • Filter by UserFilter, ProjectFilter and ModifiedSince, and add IncludeReviewer to include issues the user reviews.
  • Each issue shows its project, status, priority, days since it was last modified, and a link to the issue.
  • Results are cached for the minutes set in AceProject Cache Minutes, and saving any Web API record clears the cache.
  • Keep Security Mode on Access Token for these endpoints.
Master > Content > Scheduled Tasks > DynamicRoles - a failing role query no longer removes members from it

When a dynamic role's query fails, that role keeps its current members, and the other dynamic roles still update.

  • The failure is listed in Master > Development > Errors and in the Process Log, naming each role whose query failed.
  • Before, members of the failing role could lose it until the next successful run.
Master > Content > Scheduled Tasks - a site that cannot load is reported, and the other sites still run

The scheduler now reports problems it used to skip without a trace.

  • A web site that cannot be loaded is listed in Master > Development > Errors by id, and the other sites' tasks still run.
  • When the list of web sites cannot be read, no site tasks run and the tick is reported as failed.
  • A task whose next run time cannot be calculated is reported as urgent.
  • A failure reading the advanced scheduled tasks is reported.
Mail > Configuration - a mail service that cannot connect shows its error instead of an empty mailbox

The Mail module no longer shows an empty mailbox when a mail service fails to load messages.

  • On page load, the user is told the service failed and is offered its account settings.
  • On refresh or paging, messages from the other services still list. The list fails only when no service returned messages.
  • The Settings list shows a failing service as invalid.
  • Each failure is listed in Development > Errors.
Development > Web API - a failed DataTables load or user lookup is reported to the caller

Web API methods now tell the caller when they fail, instead of returning an empty success.

  • A DataTables request that fails returns its error, and the table shows it, instead of an empty table.
  • An Upsert Users request skips a user whose existing account cannot be looked up, rather than creating a duplicate. The response fails, says how many users were skipped, and counts only the users written.
  • Each failure is listed in Development > Errors.
Data Transform > XML Conversion - a failed conversion puts the record on hold with the error

An XML conversion that fails, to Excel or to Access, now stops with the error instead of saving with no generated files.

  • That includes a missing source XML file or a missing Access template.
  • The record is put on hold and shows the error, the same way for both output types.
  • The failure is listed in Development > Errors.
Broadcasts > Broadcasts - failures while building or sending a broadcast are reported

Broadcast failures that used to pass unnoticed are now listed in Development > Errors.

  • A message body that cannot be read from its URL is reported. The email is sent as before.
  • Script failures and batch completion failures are reported once per batch, with a count.
FtpFiles CpScript - failed uploads are counted and reported

FtpFiles now says how many files failed to upload, and names the first file and its error.

  • The count appears in the script's result and in the Process Log.
  • The failure is listed once in Development > Errors, with the FTP host but never the full address.
  • Files that uploaded are still counted and, when requested, deleted.
ShortGuid CpScript - a value that is not a GUID is reported once per run

ShortGuid now reports a value that is not a valid GUID once per run in the Process Log, and leaves that field empty.

  • The run is marked as having errors, so a source-data problem is visible after it finishes.
  • Later rows with the same problem are not listed again.
OcrZone CpScript - an invalid pattern or format is reported once per run

OcrZone now reports an invalid validatepattern or format in the Process Log once per run, instead of failing silently on every row.

  • The run is marked as having errors, so the problem is visible after it finishes.
  • A validatepattern that times out is listed in Development > Errors once per run, with a count.
GetImageMetaData CpScript - an image that cannot be opened is reported once per run

GetImageMetaData now reports a JPEG 2000, DICOM or TIFF image that cannot be opened, once per run with a count, in Development > Errors.

  • That row's field is left empty, and the rest of the transfer continues.
  • A tag or property the image does not have still returns an empty value, without an error.
Attribute CpScript - a blank DateTime attribute resolves to the current time

In a data transfer, now returns the current time when the attribute is blank or missing, in the requested format.

  • A transfer's first run, before ScheduledLastRunDate has a value, gets a date instead of an empty value.
  • The Process Log no longer shows an ERROR: Attribute line for a blank date.
Data Transform > Data Transfer - failures that were silent are now reported, and validation names the side that failed

Data transfers now report failures that used to pass unnoticed, and stop instead of finishing on partial data.

  • Validation labels a destination problem as Destination Error, and the message names the account the Master runs as and the real error.
  • A step that fails for some rows, such as a skipped XML file or a SharePoint column value, is listed once per run in the Process Log and in Development > Errors, with a count.
  • An MD-Staff transfer fails when a page of results or the sign-in request fails, instead of importing part of the data.
  • An RSS (Quirks Mode) transfer fails when the feed cannot be read.
  • When a failed batch's record ids cannot be read, the batch alert says why.
Data Transform > Data Transfer - stale field maps, unmatched lookups and failed batches are reported in full

Data Transfer now reports a stale field map, an unmatched lookup value and a failed batch in full, without filling the error log.

  • A field map that names columns missing from the source sends one error per run. It names the transfer and lists every missing column with its destination, instead of one error per column.
  • The Process Log notes each value that a Replace, Audiences, Keywords, Taxonomy, Roles or Module script could not match, once per value and up to 50 per lookup. Generating new taxonomy is not reported.
  • When a batch fails in a Comments, Aliases, Searches or Clicks transfer, the alert gives the row count, up to 40 row ids and whether any rows were imported, and the batch is saved under Uploads/DataTransfer.
Master > Development > Sync Methods - Ignore keeps the status it replaced, and four guards run again

Ignoring a sync method keeps the status it replaced, so a Failed method that is ignored still reads as "Ignored (was Failed)" in the Server Hub.

  • Four guards now stay pending and run again on the next sync, until their condition clears: RepairUnreachableApiBaseUrl (no request context, protected or empty appSettings, no endpoint answering) and UpgradeTargetFrameworkAll (.NET Framework 4.8.1 not installed).
  • A binding redirect written for a DLL that the site excludes from sync is recorded in Master > Development > Errors. The redirect itself is unchanged.
Master > Content > Scheduled Tasks - the scheduler reports its tick path and lists pending Development sync methods

The scheduler now reports whether a tick ran the due tasks or ran nothing, and why.

  • The existing Execute method is unchanged.
  • The Master also lists the Development site's pending sync methods once an hour and after an update, so the Server Hub shows a method that never ran, even when an update stopped before the Development step.
Centralpoint Agent - reports why server management turned off, the real error cause, and expiring certificates

Centralpoint Agent 8.12.16.5 tells the Server Hub why it cannot manage a server, and reports the real cause of a failure.

  • When server management turns off, the Agent reports the check that failed, such as a missing Site.Key or a Master web.config it cannot read. It sends this once per change.
  • A TLS or connection failure reaches the Hub with its underlying cause, not "see inner exception".
  • Capping SQL Server memory names the SQL login and the missing permission, and gives the GRANT to run.
  • The standing site probe recognizes an HTTP.sys answer that matched no IIS site, and retries it once before reporting.
  • The check-in lists the certificates that IIS HTTPS bindings serve, with their expiry dates.
  • The Agent reports which path each scheduler tick took.
Admin > Deep Links - the SAML IdP Cert Password is no longer shown on screen

The SAML IdP Cert Password in the Admin > Deep Links module properties no longer shows its value. A saved password shows dots and the hint "A value is set. Type a new value to replace it."

  • Save without touching the field to keep the saved password.
  • Type a new password and save to replace it.
  • Check Clear and save to remove it.

Saved passwords are not changed.

Admin > Global Login - the SAML Local Certificate Password is no longer shown on screen

The SAML Local Certificate Password in the Admin > Global Login module properties no longer shows its value. A saved password shows dots and the hint "A value is set. Type a new value to replace it."

  • Save without touching the field to keep the saved password. SAML sign-in keeps working.
  • Type a new password and save to replace it.
  • The field is required, so Clear is refused while SAML is turned on.

Saved passwords are not changed. If you need the password, get it from whoever issued the certificate.

Master > Deployment > Updates - a master with updates turned off says so and installs nothing

When updates are turned off for a master, Master > Deployment > Updates now says "Updates are turned off for this master" and offers nothing to install.

  • The UpdateInstall scheduled task skips the install and records "Updates are turned off for this master." in its process log.
  • Masters with updates turned on see new versions as before.
  • This applies to versions released after this one.
  • To turn updates back on, contact support.
Master > CMS > Modules - new Password Box control for secret properties and attributes

The Module Designer has a new Password Box control for properties and attributes that hold a password, API key or other secret.

  • The saved value is never shown. The field shows dots and the hint "A value is set. Type a new value to replace it."
  • A blank save keeps the saved value, and a Clear box removes it.
  • Version compare shows dots for a Password Box value instead of the secret.

Switching an existing Text Box field to Password Box keeps its saved value.

Master > Admin > Settings - machine key values are no longer shown on screen

The Validation Key and Decryption Key on Master > Admin > Settings no longer show their values. They show dots and the hint "A value is set. Type a new value to replace it."

  • Save without touching them to keep the current keys.
  • Generate Keys and save still replace both keys.

If you need the Master machine key, read it from the Master web.config.

Admin > Settings - machine key values are no longer shown on screen

The Validation Key and Decryption Key on Admin > Settings no longer show their values. They show dots and the hint "A value is set. Type a new value to replace it."

  • Save without touching them to keep the current keys.
  • Generate Keys and save still replace both keys.

If you copy the machine key to other servers, read it from the site's web.config instead of this page.

Admin > Properties - API keys, secrets and passwords are no longer shown on screen

Secret fields on Admin > Properties no longer show their saved value. A saved field shows dots and the hint "A value is set. Type a new value to replace it."

  • Leave the field blank and save to keep the saved value.
  • Type a new value and save to replace it.
  • Check Clear and save to remove the value.
  • This covers the TinyPNG API key, Google Static Maps API secret, Twilio authorization token, FitBit consumer secret, SalesForce password, consumer secret and security token, SharePoint password, MD-Staff password and client secret, and Itiliti client secret.

Saved values are not changed. If you need to read one of these values, get it from the service that issued it.

Development > Web API - saving a record over 4 MB no longer fails in the Console

A Web API record that saves content now stores a document of up to 16 MB, completing the higher limit added in this release.

Saves over about 4 MB passed the Web API but failed when the site handed the document to its Console, and the response read No Items Upserted. They now save in full, including HTML with dense markup.

web.config change

The update replaces the Console's WebServices\Web.config with a version that adds a <location path="Utilities.asmx"> block: httpRuntime maxRequestLength="196608" and requestLimits maxAllowedContentLength="201326592", both 192 MB. The document grows when it is escaped on the way to the Console, so the limit sits well above 16 MB.

Check two cases on your own servers:

  • Any change you made by hand to Console\WebServices\Web.config is replaced by the update. Re-apply it afterward.
  • A virtual directory that runs as its own IIS application keeps its own web.config, which the update does not touch.
Master > Content > Scheduled Tasks > DataUpdate - a locked offline page no longer fails the data update

When DisplayAppOffline is on, the DataUpdate scheduled task no longer fails because the App_Offline.htm page is locked.

  • Taking the site offline retries a locked page, and continues when the page is already in place.
  • Bringing the site online renames a page it cannot delete, so the site comes back online instead of the task failing.
  • The task still leaves the site's API app pool running, as before.
Centralpoint Agent - brings a site back online when the worker that took it offline stops

Centralpoint Agent 8.12.16.5 brings a site back online when the Master worker that took it offline stops before its work finishes.

  • A sync, an update install, a data update or a backup restore takes a site offline while it runs. If that worker crashed, was recycled, or restarted because a Master file changed, the site stayed offline until someone removed App_Offline.htm by hand.
  • The Agent now removes App_Offline.htm from the site's Root and Console within one check-in, and starts the site's API app pool if the work had stopped it.
  • A restore that stops after emptying the site's folders leaves the site offline, so a half-restored site is never served.
  • An App_Offline.htm placed by hand is never removed.
  • Each recovery, and any site the Agent cannot bring back, is reported to Oxcyon.

This needs the Master on 8.12.16. Set Agent:OfflineRecoveryEnabled to false in the Agent's appsettings.json to turn it off.

Master > Deployment > Web Sites - a site created from a backup no longer gets a second copy of a location block

Creating a site from a backup no longer adds a second copy of a web.config location block.

The backup's location blocks are now matched to the new site's by path, ignoring letter case and slashes. A backup's api.svc block no longer lands beside the new site's Api.svc block, which would define the same setting twice.

Site-wide - web.config updates now reach the secondary server of a load-balanced site

web.config updates in a release now reach the secondary server of a load-balanced site.

Some updates stopped before writing the secondary server, because that server had no Backups folder. The update now creates the folder first, so both servers get the same web.config. A secondary that missed an update in an earlier release is not repaired by this release.

Development > Web API - Web API records accept requests up to 16 MB

Web API records now accept a posted request of up to 16 MB, up from 64 KB, so large generated content saves in one call.

  • A request over 16 MB is refused with status 413.
  • Lrs.svc and the Query Analyzer share this setting, so their 64 KB limit rises too.

web.config change

The update edits each site's main web.config (Root). The Console web.config is not changed.

  • system.serviceModel > bindings > webHttpBinding: the unnamed binding gets maxReceivedMessageSize, maxBufferSize and readerQuotas maxStringContentLength of 16777216. A higher value is kept, and a named binding is not changed.
  • <location path="Api.svc">: maxRequestLength is set to the binding's size, at least 16384. A higher value is kept.
  • An unnamed basicHttpBinding added by hand at exactly these 16 MB values is removed, when nothing on the site uses it.

Check two cases on your own servers:

  • A virtual directory that runs as its own IIS application keeps its own web.config, which the update does not touch. Add the same binding there if its services need larger requests.
  • If custom code declares its own <service> for the Web API with a named binding, raise that binding by hand. The update reports it and leaves it unchanged.
Master > Admin > Properties - a refused administrator logon says which step did not run

When saving Master properties cannot log on as the administrator, the save message now says which step did not run, and why.

  • On Master > Admin > Properties, the websites are not updated, and the message says they still hold the old Master property values.
  • On Master > Development > Properties (API), the message says the API was not restarted.

Both messages name the account and the reason the logon was refused.

Retention Policies > Storage Paths - a file system path stops when its logon is refused

A File System storage path that impersonates an administrator or a named account now stops when that logon is refused. It no longer runs as the app pool identity instead.

  • The error starts with "Could not impersonate" and names the account and the reason.
  • For a named account, the error points to the storage path's own identity fields, not Admin > Settings.
  • Validating the storage path shows this error instead of a stack trace.
  • The run status no longer shows the stored encrypted password.
Master - Clean Up, update installs and site creation work when the Master app pool runs as NetworkService

On a Master whose app pool runs as NetworkService, tasks that run as the administrator no longer fail with "An error occurred while attempting to impersonate".

  • The CleanUp scheduled task runs to completion again.
  • Installing an update records the new version in the Master properties.
  • Creating or restoring a website, Update Build Prep, and saving the API properties complete.
  • When the administrator logon is refused, the error on Master > Deployment, Master > Content > Scheduled Tasks and update installs now names the account and the reason.
Centralpoint Agent - admin impersonation accepts a user@domain account with a blank Domain

The Centralpoint Agent's admin impersonation check now accepts a user@domain account when the Domain setting is blank.

  • A user@domain username with a blank Domain, or a Domain of ., now logs on with the full account name.
  • The Agent's hourly check no longer raises AdminImpersonationFailed for a correct password.
  • The Api uses the same logon for load balancing and service control, so those actions accept the account too.
  • A username without @ is unchanged, and a Domain you set is used as entered.
  • A local account whose name contains @, with a blank Domain, now fails to log on. Set Admin.Impersonation.Domain to the machine name for that account.
  • When a logon fails with error 1326 and the Domain is blank, the message now says the Domain is blank and how to set it.
Centralpoint Agent - a patch restarts every app pool it stops and never copies files into a pool that will not stop

A patch now restarts every app pool it stops, and it never copies files into a pool that will not stop.

  • A busy app pool gets as long as IIS allows its worker to finish: the pool's shutdown time limit plus 15 seconds.
  • A pool that will not stop in time, or cannot be found, is left alone. The patch reports its files as deferred, and that site stays on the old version until you dispatch the patch again.
  • A pool that an earlier patch left stopped is copied and restarted by the next dispatch.
  • A web.config skips its binding redirects only when a file in its own folder did not land. The other folders of the same site still get theirs.
  • When the patch dispatches again, it handles the pools it deferred last time first.
  • One patch spends at most 3 minutes stopping and restarting pools. A pool whose stop and restart no longer fit is left running and deferred.
Site-wide - updated cryptography library fixes two denial-of-service advisories

The Api and Centralpoint Agent and CLI 8.12.16.5 use System.Security.Cryptography.Pkcs 10.0.13, which fixes two published denial-of-service advisories.

  • The advisories are GHSA-846f-f764-76mx (High) and GHSA-2fmv-rv2c-59x7 (Moderate).
  • None of the three calls this library directly. It reached them through the SQL Server client.
  • No setting changes and no action is needed.
Content > GenericEnhanced modules - new Word Variable Autofill fills Word template fields from the record

A new Word Variable Autofill module property fills a Word template's DOCVARIABLE fields from the record whenever the document is opened.

  • It applies in the Word viewer and PDF viewer (FileViewer and PdfViewer CpScripts), on download for editing (WordAddInDownload and the Policies download), and in File Output.
  • Enter one line per field: Field Name = Attribute | Attribute ; format=MM/dd/yyyy. The first attribute with a value is used, and a field with no attribute prints blank.
  • A->B reads attribute B from the record whose DataId is stored in attribute A.
  • Fields fill only when the viewer can see the record. A disabled, expired or restricted record opens unfilled.
  • Formatted text prints as plain text, and dates show in the site's time zone.
  • An invalid format= leaves that field blank. The document still opens.
  • Viewing never changes the uploaded file. A copy downloaded for editing and saved back keeps the values filled at download.
  • The template must contain a field for each value. Fields missing from the template are skipped.
  • Prior policy versions are shown exactly as they were.
  • The property is empty by default, so nothing changes until it is set in the module's Page Options > Module Properties.
Site-wide - AI and API documentation libraries updated

The libraries behind the Anthropic Claude provider, local ONNX embeddings, the API reference page and AI answer formatting are updated to their latest versions. Nothing changes in how you use these features.

Centralpoint CLI - site migration matches names that contain ]

Centralpoint CLI 8.12.16.5 now finds site names and addresses that contain ] when it rewrites them during a migration.

Master > Content > Scheduled Tasks > Backup - cleanup continues past an archive it cannot delete

Backup cleanup now keeps deleting old backups when one archive cannot be deleted. The error that follows names each archive it could not delete and why.

Site-wide - emails sent by scheduled tasks keep their attachments

Emails and text messages sent by a scheduled task no longer fail because no web page is involved. An email with an attachment given as a site-relative path now includes the attachment.

Site-wide - access codes and other random values come from a secure generator

Multifactor sign-in access codes, Twitter sign-in requests, and other random values the site generates now come from a cryptographically secure generator. Nothing changes in how you use these features.

RelatedData CpScript - each related attribute applies its own filter

The RelatedData CpScript now applies each related attribute's own filter. Before, every attribute used the filter of the first one. A site map link with no Fields set no longer causes an error.

DataSource CpScript - the Google Map display places each marker at its own longitude

The DataSource CpScript's Google Map display now places each marker at the row's own latitude and longitude. Before, every marker used the longitude of the first row.

Data Transform > Data Transfer - an export no longer overwrites an earlier export of the same name

When a Data Transfer writes a file whose name is already taken, it now adds the first free number (_1, _2, ...) to the name. Before, it added a random number, which could match an earlier export and overwrite it.

CpListBox and CpDataListBox controls - saved selections are kept when the list uses text values or join clauses

Attribute selectors built on CpListBox and CpDataListBox keep a saved selection in two more cases.

  • A list whose values are text, such as an IntegrationId column, no longer drops a saved value that is not a GUID when RememberMissingItems is on.
  • A CpDataListBox with JoinClauses no longer reports its saved selections as inaccessible.
Site-wide - scanner requests no longer fill the server event log, and unservable stored files are reported

Requests from scanners and bots are answered quietly instead of raising server errors.

  • A request with a malformed Host header gets a plain 404.
  • A request path the server rejects, such as one containing & or ::$DATA, no longer writes an error to the Windows event log.
  • When visitors request stored files whose names the site cannot serve, Development > Errors shows one entry that tells you to run Admin > File Name Cleanup.
Site-wide - module search letters and title filters treat %, _ and [ as plain characters

Module search browse letters and title filters now match %, _ and [ as plain characters.

  • A browse letter of % lists only titles that start with %, not every record.
  • A title prefix too long for any title to match returns no results instead of an error.
  • Searches and related-content filters on a name that contains ] now find that name.
Site-wide - SQL performance optimization for system queries that exclude a list of records

System queries that exclude a list of 100 or more records now run consistently fast, however large the list grows. This applies anywhere the platform builds a query that leaves out a set of records, for example:

  • a Data Transfer delete that skips the records listed in a module's Grid Disabled Checkboxes property
  • front-end role filtering when Web Site Role Filtration & Security is set to All (FISMA Compliant)
  • the DesignSwitch CpScript's excludeddesigndataids list
  • custom code that builds a query with SqlBuilder

Custom code that filters by a user attribute with more than 99 user ids no longer fails with a SQL error. Custom code that references SqlBuilder.MaxValuesBeforeLookupTable now gets a compiler warning; its value is unchanged and the code keeps working.

Data Transform > Data Cleaner - new Determination and Source Credit attributes

Each Data Cleaner rule can now record where its logic comes from, using two new optional attributes.

  • Determination holds the IntegrationId of each approved detection rule behind this rule, one per line, up to 4,000 characters.
  • Source Credit names who the logic is credited to: the authority first, then the citation, up to 256 characters.

Both attributes are optional, so existing rules are unchanged and save as before. Both values can also be used in data sources and reports.

Site-wide - stored names and titles display as text and can no longer run script

To prevent cross-site scripting (XSS), names, titles and other stored text shown in the console and in front-end dropdowns now display as text and can no longer run script.

  • Covers console list pages and record details, including Site Architecture > Taxonomy and Audiences, Users, Roles, Development > Database and Keyword Lists, Design > Media Manager, module record grids, breadcrumbs, and the taxonomy and audience selectors.
  • Covers front-end dropdowns built by CpScripts such as NavigationSectionMenu, AdvertisingSearchRedirectDropDownList and EventBriteRegisterButton, plus the taxonomy cascading dropdown.
  • Allowed formatting such as bold, italics and colored text still renders.
  • A title that contains an email in angle brackets, such as Name <name@example.com>, now shows the email instead of hiding it.
  • Module grid columns defined as HTML expressions in the module's Grid Columns setting, such as Preview links, are unchanged.
  • Approving or saving a comment in Comments > All Modules no longer saves the on-screen hint text as the commenter's name and email. A comment from a signed-in user keeps its empty name and email, and the comment text is saved exactly as submitted.
Site-wide - error details and task notification emails hide API keys, tokens and secrets

Error details and scheduled task notification emails now hide API key, token and secret values, as they already did for passwords.

  • A value written as api_key=, apikey=, access_token=, client_secret=, secret_key= or similar shows as ***REDACTED***.
  • A form or query field named for a credential, such as api_key, access_token or client_secret, is left out of Development > Errors.
  • A task setting whose name ends in Token, Secret or ApiKey, such as JsonBearerToken, is hidden in notification emails.
  • Links and HTML around a hidden value stay intact. The notification message you write for a Data Update task is sent as written.
  • Some values that only look like credentials, such as a pageToken= paging value, are also hidden.
Design > Data Sources - a failing JSON data source shows a short message instead of the vendor's error

When a JSON data source cannot load its data, visitors now see "The JSON data source could not be loaded." instead of the vendor's error text.

  • The vendor's error is kept in the page trace for administrators, with API keys and tokens hidden.
  • After a failure, the data source waits one minute before calling the vendor again, so an outage does not send a request on every page view.
  • The Personal Dashboard Data Source gadget and the Data Sources JSON preview and validation messages now show vendor text safely, with any HTML displayed as text.
  • CreateExcel.aspx shows the site's error page for a failing JSON data source, and CreateJSON.aspx returns a 500 in JSON error mode. Site search results that use a failing JSON data source come back empty.
Data Transform > Data Transfer - JSON vendor errors hide API keys and tokens

When a JSON data transfer fails against a vendor, the vendor's error text no longer shows API keys or tokens.

  • An api_key, apikey, token, secret or secret_key value that the vendor echoes back is shown as ***REDACTED*** in the Process Log, the transfer's error email and the Console validation message.
  • The error message no longer includes a technical stack trace, so it is shorter and easier to read.
  • Credentials sent as a header, such as Authorization: Bearer, or in JSON form are not yet redacted.
Master > Content > Scheduled Tasks > CleanUp - deletes old system-written audit trail events

Audit trail events are now kept for 30 days when they were written by the system rather than by a person. Until now these events were never removed, and on the busiest sites almost all of them come from automated processes such as Data Transfer, which records an event for every record it touches on every run. Over time that grows into millions of rows that no one reads.

Removing them:

  • Keeps the database from growing without limit, which shrinks backups and makes them faster to create and restore.
  • Makes the Audit Trail on a record easier to read, since it is no longer buried under repeated automated entries.
  • Keeps the history people actually use. Every change made by a current user stays in full.

How it works:

  • The new Events Retention property in Admin > Properties sets how long system-written events are kept. It defaults to 30 days.
  • Only events not tied to a current user are deleted: automated processes such as Data Transfer, anonymous visitors, and users no longer in the system.
  • Events by current users, including users marked deleted, are always kept.
  • The newest event of each type on a record is always kept, so "last modified by" and similar displays are unchanged.
  • Set 0 to delete all such events on each clean up, or -1 to disable retention and keep full history.
  • It runs from the CleanUp scheduled task, Master > Development > Utilities, and each site sync, install, backup and deployment. Sites with a large backlog clear it over several clean ups.
Data Transform > Data Transfer - JSON transfers skip empty URL tokens and fail on vendor errors

A JSON Data Transfer no longer sends a blank URL parameter when its token resolves empty, and a vendor error now fails the run.

  • A query parameter whose value is only cp:scripting tokens that resolve empty is left out of the request. The Process Log names the parameter that was left out.
  • Fixed text written beside a token is still sent, so fields=id,name[token] sends fields=id,name.
  • When the vendor returns an error (such as 401 or 404), the run fails and sends the error email. Before, the run could report success and import one bogus row.
  • Saving a transfer whose JSON source returns an error shows the vendor's message under Validation, as plain text.
Centralpoint CLI - install and repair create the Master app pool without the 29-hour recycle

When install or repair creates the cpsys_Master app pool, Centralpoint CLI 8.12.16.4 turns off IIS's 29-hour periodic recycle on it, so a new install never starts with it.

  • The CLI changes only a pool it has just created. The Centralpoint Agent covers an existing cpsys_Master.
  • A value set in the server's app pool defaults is kept.
  • Site and API app pools keep the IIS default.
Centralpoint Agent - the Master app pool no longer recycles every 29 hours

Centralpoint Agent 8.12.16.5 turns off IIS's 29-hour periodic recycle on the cpsys_Master app pool, so a recycle no longer kills a long scheduled task or sync partway through.

  • The Agent changes the pool only while the pool and the server's app pool defaults are both on the IIS default of 1,740 minutes. A value the client set is kept.
  • Changing the pool can restart it, so the Agent waits until no Master process is running and no site is offline.
  • A Master older than 8.12.12 keeps the default until it is updated.
  • Site and API app pools keep the IIS default.
Centralpoint Agent - loops restart after a fault and a failed step no longer stops check-ins

Centralpoint Agent 8.12.16.4 restarts a loop that faults and keeps checking in when one management step fails.

  • A scheduler, management or pipe-listener loop that faults restarts after a 1 minute wait. The wait doubles on each repeat fault, up to 4 minutes, and starts again at 1 minute after an hour without a fault.
  • A management step that throws before the check-in is logged and skipped, and the check-in still runs. The steps are the web.config refresh, the trace auto-revert, the IIS repair and the pending Master operations.
  • A Master database that cannot be opened no longer stops the tick. A pending Sync or Update Install waits. One still open after 4 hours is reported as "the Master database could not be reached".
  • Every Master database connection the Agent opens trusts the SQL Server certificate.
  • The Master health probe takes the Master's address from UpdateInstall.SyncInvokeMethods when Api.Base.Url and Cda.Utilities are absent. A localhost address is skipped.
  • Agent:ReportLoopHealth (default true) set to false stops the Agent sending its loop health.
WordAddInDownload CpScript - opens macro-enabled .docm and .dotm files for editing in Word

Download to Edit in Word now works for macro-enabled Word files (.docm and .dotm), and their macros are kept when the document is saved back.

  • These files no longer show a System Error. They download, lock and save back like a .docx.
  • The WordAddInDownload CpScript now shows its checkout link for .docm and .dotm records instead of a plain download link. With handlerOnly set, these records show the checkout link instead of the nonHandlerFormat output.
  • To edit a .dotm template, right-click the downloaded file and choose Open. A double-click starts a new document, which the add-in cannot save back.
  • Word may block the macros in a downloaded file until it is unblocked. Editing and saving still work.
  • If a document cannot be prepared for editing, the download fails without locking the record.
  • When Remote Update Security Mode is empty, WordAddInDownload shows a plain download link instead of a checkout link that fails.
  • .docx, .doc and .pdf downloads are unchanged. The PolicyWordAddInDownload CpScript in the Policies module does not support macro-enabled files yet.
DragAndDropFileUpload CpScript - works without a redirectUrl

The DragAndDropFileUpload CpScript now works when its optional redirectUrl is left out.

  • Leaving out redirectUrl no longer causes an error on the page.
  • Without redirectUrl, no "Click here to go to form" link is shown after an upload. A blank redirectUrl used to show a link to the home page.
  • With redirectUrl set, the link works as before.
Site-wide - a page whose content record is missing now shows Page Not Found instead of an error

A site page that is still listed in navigation, but whose content record no longer exists, now shows the Page Not Found page instead of a server error.

  • Visitors see the standard not-found page.
  • Pages whose content exists are not affected.
Tools > Clear Search Terms - the All Modules option now clears search terms, and the filter is checked before it runs

Tools > Clear Search Terms now works when All Modules is selected, and checks the Filter before deleting anything.

  • Choosing All Modules clears search terms instead of failing. With an empty Filter, you are asked to confirm before every search term on the site is cleared.
  • A Filter that contains ;, --, /*, or unbalanced quotes or parentheses is rejected with a message, and nothing is deleted.
  • When one module is selected, the Filter applies only to that module's search terms, even when it uses OR.
  • All Modules appears once in the Module list.
Centralpoint CLI - install creates the Master pool as NetworkService, and repair leaves its identity to the Agent

Centralpoint CLI 8.12.16.3 creates cpsys_Master as NetworkService on a new install. Centralpoint.exe repair no longer changes cpsys_Master's identity, which the Centralpoint Agent now manages. Repair still restores the identity of every other Centralpoint app pool.

Centralpoint Agent - serves the Master's IIS changes and moves the Master pool to NetworkService

Centralpoint Agent 8.12.16.3 runs a local named pipe that makes IIS changes for the Master, and it moves the cpsys_Master pool to NetworkService.

  • The pipe accepts only the Master's own worker process, SYSTEM, or an elevated administrator. A web site's worker process is refused, even though it runs as the same account.
  • The move to NetworkService waits until the Master is 8.12.16 or later, its admin impersonation logs on, and no Master process is running.
  • Agent:MigrateMasterPoolIdentity (default true) set to false moves the pool back to LocalSystem. Agent:PipeEnabled (default true) turns the pipe off.
Master > Development > Errors - a temporary LSA outage during a permission grant is named as transient

When Windows cannot translate an account name during a file permission grant, because the Local Security Authority is briefly unavailable, Master > Development > Errors now records it as a temporary outage. The message says that the next Clean Up retries the grant. It no longer reports that the SQL service account does not exist.

Master > Development > Health Monitor - available memory shows the correct value

Master > Development > Health Monitor now shows available memory correctly in GB for any amount. Before, values under 1,000 MB or over 9,999 MB showed the wrong figure. When the server does not let the Master read the memory counter, the page shows "unavailable" instead of an error.

Master > Development > Sync Methods - a sync method stops when the admin impersonation logon fails

When the Admin Impersonation account cannot log on, a sync method now stops and reports "Could not impersonate an administrator" instead of running under the Master's own identity.

  • Executing a method from Master > Development > Sync Methods shows the error, and the Process Log records the run as failed.
  • An update install reports the failure for each affected method.
  • The DevOps task keeps the admin identity for every method in its run.

To fix the logon, update the Domain, Username and Password in Master > Admin > Settings.

Master > Content > Web Sites - a load-balancing change applies without restarting the Centralpoint Agent

Saving a load-balancing change on a web site now tells the Centralpoint Agent to re-read its load-balanced site list. The Agent service no longer restarts. If the Agent cannot re-read the list, the save restarts the service, as before.

Site-wide - the Master app pool runs as NetworkService, and the Centralpoint Agent makes its IIS changes

The Master application pool (cpsys_Master) now runs as NetworkService, its original identity, and the Centralpoint Agent makes the Master's IIS changes for it.

  • The Agent moves an existing Master pool to NetworkService on its hourly check, when no Master process is running. The pool recycles once.
  • Creating and deleting a web site, turning read-only on or off, Always On, and the update install's pool stops and starts now go through the Agent.
  • A pool stop or start that fails is now recorded in Master > Development > Errors.
  • A scheduled task that writes to a folder outside the Centralpoint install needs NETWORK SERVICE granted on that folder, as before. This covers Data Transfer, Data Archive, SFTP Source, File Synchronization and similar tasks.
AI Governance > AI Indexing - a canceled module unenroll is reported with how far it got

A canceled module unenroll or settings change that removes indexed passages now writes an error entry on Master > Development > Errors. The entry names the module and the passages already removed. Run the unenroll again to finish.

AI Governance > Knowledge Assistant - searches over a large index finish faster and explain when they are too big

Knowledge Assistant search and chat, and the Page Assistant, now finish faster on large indexes and no longer time out when too many passages match.

  • Search and chat build the list of matching passages first, then rank only those. A search over about 80,000 passages dropped from about 5.6 to 3.7 seconds on a test server.
  • When more than 150,000 passages match, the search stops and shows "Select specific knowledge-base modules to search this index."
  • When you already picked modules and they are still too large, it shows "The selected knowledge-base modules are too large to search together. Select fewer modules."
  • Chat shows that message instead of an answer with no sources. The Page Assistant still answers, without content from your site.
  • A search that cannot finish within 20 seconds now stops at that point, before the browser's 30-second limit.
  • The retrieval benchmark on the AI test page reports how many passages matched, and it stops with the message instead of timing a search that did not run.
Data Transform > Data Transfer - bulk imports retry after a dropped connection and save a batch they cannot import

A Bulk (insert only) transfer into a standard module no longer loses rows silently when the database connection drops.

  • A batch that fails because the connection dropped is cleaned up and retried, up to three tries.
  • A batch that still fails is saved to Uploads\DataTransfer\Failed_{transfer id}\, and the transfer continues with the next batch.
  • When a run loses a batch or does not finish, its source files are moved to that folder, so the next scheduled run does not import them again.
  • The run shows "Transfer Completed with N lost batch(es)" and sends no success notification.
  • One recovery email lists the lost rows, the saved file and how to re-run. It goes to the transfer's Error Notification and Notification recipients, or else to the site's Error Notification Email.
  • The Error Notification Body has three new placeholders: DataTransferRecordLink, LostBatchSummary and KeptSourceFolder.
  • A lost batch sends this recovery email instead of the transfer's own error email. Its subject is "Data Transfer lost N batch(es): ", so update any mailbox rule that matches the old subject.

Delete the saved files once the rows are recovered.

Broadcasts > Broadcasts - custom SMTP broadcasts now check the email server's certificate

Data Broadcasts that use the custom SMTP settings now always check the email server's certificate when they send over SSL.

  • A broadcast sent through a custom SMTP server with a self-signed, expired or mismatched certificate now fails instead of sending. Before, a form email on the same site could switch this check off.
  • Broadcasts sent through the site's own email settings keep trusting that server, the same as form emails, so they work as before.
  • Custom SMTP settings now send directly to the configured server, and accept a host written as host:port.
  • SMTPEnableSsl is now applied both on and off, even when the site's web.config turns SSL on for email.
  • When custom SMTP has no user name and password, the broadcast connects without credentials. It no longer uses Windows sign-in or the user name and password in the site's web.config.

If custom SMTP broadcasts stop sending after this update, install a valid certificate on that email server, or set the host to the name the certificate was issued for. The failure reads "The remote certificate is invalid according to the validation procedure."

Forms > Forms - sending a form email no longer turns off certificate checks for the whole site

Centralpoint now trusts an invalid certificate only for the one connection that needs it, never for the whole site.

  • Form emails still send through an email server with a self-signed certificate, the same as today.
  • All other secure connections, such as web service calls and other emails, now check certificates normally, even after a form email was sent.
  • The Epic wait-time data sources still connect to their own Epic server as before. Other code that calls that same Epic server also skips the check, so point these data sources only at your real Epic server.
  • Data Broadcast subscription confirmation emails now close their mail connection after each send.

Check your custom code

Custom code under App_Code/Custom may have worked only because a form email had already turned certificate checks off for the whole site. After this update, it can fail when it calls an HTTPS site or email server whose certificate is self-signed, expired, or issued for a different name.

  • Look for this error: "The remote certificate is invalid according to the validation procedure."
  • Best fix: install a valid certificate on that server, or connect with the host name the certificate was issued for.
  • If the server must keep its certificate, trust only that connection with Centralpoint.Web.CertificateTrust. Do not add code that trusts every certificate, because it turns the checks off for the whole site again.
  • Custom code that trusts a mail client must dispose it (a using block). Otherwise another email to the same server can reuse the trusted connection.
Admin > Global Login - failed SAML sign-ins are recorded with their cause, and users stop looping after three failures

Failed SAML sign-ins through a Global Login now show up in Development > Errors with their cause, and users no longer loop back to the Identity Provider.

  • Each failed sign-in is recorded under its own SAML sign-in error, with the step that failed and the timing details sent by the Identity Provider. User names and attribute values are never recorded.
  • Repeated failures are limited to about one entry an hour for each Global Login and step, so an outage cannot flood the error list.
  • After three failed sign-ins in a row, the user sees the AuthenticationFailedErrorMessage with a support reference instead of being sent back to the Identity Provider again.
  • Error entries no longer store the raw SAML response for any error on the site.
Centralpoint Agent and CLI - two third-party libraries updated

The Centralpoint Agent and command-line tool are updated to 8.12.16.1.

  • System.Security.Cryptography.ProtectedData is updated to 10.0.12.
  • System.IdentityModel.Tokens.Jwt is updated to 8.23.0.
Site-wide - third-party libraries updated, with matching web.config binding redirects

Several third-party libraries that every site loads are updated to their current versions. There is no intended change in behavior.

  • Dapper (data access) is updated to 2.1.89.
  • Microsoft.Bcl.AsyncInterfaces, Microsoft.Extensions.DependencyInjection and System.Security.Cryptography.ProtectedData are updated to 10.0.12.
  • System.IdentityModel.Tokens.Jwt and its four Microsoft.IdentityModel libraries (sign-in tokens) are updated to 8.23.0.

Masters already on 8.12.15 receive the same libraries and binding redirects through patch 8.12.15.1.

web.config change - read this if a site has a virtual directory or custom code

This version updates these runtime > assemblyBinding binding redirects in each site's Root and Console web.config, and in the Master's Root web.config:

  • Microsoft.Bcl.AsyncInterfaces -> 10.0.0.12
  • Microsoft.Extensions.DependencyInjection and Microsoft.Extensions.DependencyInjection.Abstractions -> 10.0.0.12
  • System.Security.Cryptography.ProtectedData -> 10.0.0.12
  • Microsoft.IdentityModel.Tokens, Microsoft.IdentityModel.JsonWebTokens, Microsoft.IdentityModel.Logging and Microsoft.IdentityModel.Abstractions -> 8.23.0.0
  • System.IdentityModel.Tokens.Jwt -> 8.23.0.0

Dapper keeps its assembly version, so it needs no redirect.

  1. A virtual directory running as its own IIS application has a separate web.config that this update does not touch. Add the same redirects to that web.config by hand, or the sub-application fails with a "Could not load file or assembly" error.
  2. Custom code that references any library above at an older version must still load after the update. If it does not, add the matching redirect to its configuration.
Master > Content > Scheduled Tasks > CleanUp - the Temp folder sweep keeps empty folders created in the last month

The CleanUp scheduled task's Temp folder sweep no longer deletes an empty folder created in the last month.

  • The same sweep runs from Development > Utilities and with each website sync.
  • Pages that create a working folder in Temp and fill it later keep that folder while they wait. A large upload no longer fails with a missing folder error.
  • An empty folder now stays until it is one month old, then cleanup removes it.
  • Files older than one month are removed as before.

Centralpoint Update 8.12.15
Monday, September 28, 2026
FeatureSummary
Admin > File Name Cleanup - new page renames files the site cannot serve and updates the links to them

The new Admin > File Name Cleanup page finds files and folders under Uploads whose names the site cannot serve, renames them, and updates the content that links to them.

  • Scan Uploads lists each name containing & % + # , ;, a character Windows does not allow, or a trailing dot or space, with its planned new name. Blocked characters become _, and a taken name gets _1, _2.
  • Find links in content finds the records in site search that link to those names. Links written as a full URL are listed to fix by hand.
  • Download CSV lists every rename, every linking record and field, and every full-URL link.
  • Fix renames the files and saves each linking record once, with a history version and an event. A fix that stops part way is completed by the next Fix.

Only content in site search is updated. Links outside Centralpoint, such as emails and bookmarks, keep the old names. Find links and Fix require a healthy site search index. Running Fix outside business hours is recommended.

web.config change

The Console web.config gains a <location path="FileNameCleanup.aspx"> entry with httpRuntime executionTimeout="7200", so a long fix is not cut off. Only the Console web.config changes. The page exists only in the Console, so virtual directories running as their own IIS application and client custom code need no change.

Site-wide - uploaded and imported file names are stored in a form the site can serve

Uploaded and imported files are stored with _ in place of & % + # , ;, characters Windows does not allow, and a trailing dot or space, so the site can serve them.

  • The rule applies to Design > File Manager, the file upload dialog and FormUpload, the content editor's file managers, File Sharing uploads, zip extraction, the FileDownload, FileAction and ScreenCapture Data Transfer scripts, SharePoint attachments and Word Add-In saves.
  • A renamed file is saved beside an existing file of that name, such as name_1.pdf, rather than overwriting it. A name that needs no change still replaces the existing file.
  • The Modify File Name website property still applies on top of the rule.
  • Moving a file to another folder keeps its name. Only a new file or a rename is cleaned.
  • Form emails attach a file whose name contains a comma, such as Last, First.pdf.
  • The WordAddInDownload link works for names containing &, # or +.

Existing files are not renamed. Admin > File Name Cleanup handles those.

A recurring Data Transfer that stored a file under a blocked or percent-encoded name, such as A&B.pdf or My%20File.pdf, downloads it once more under the cleaned name. The older copy stays on disk until Admin > File Name Cleanup removes it.

Master > Deployment > Synchronize - a file sync no longer stops at a folder path that is too long

A file sync now completes when a folder it removes from the destination holds a path longer than the Windows limit of 260 characters.

  • That folder is removed, and the sync continues with the remaining folders.
  • The site's last sync date updates when the sync finishes.
  • A folder that cannot be removed, for example because it is in use or access is denied, is skipped while the sync continues.
Site-wide - plugin scripts load their updated version after a release without a browser refresh

Built-in plugin scripts now carry a version stamp, so browsers load the updated file after a release instead of a cached copy.

  • This covers the ExtDatePicker, ExtFancyBox, ExtFlyoutMenu, ExtWaterMark, ExtPasswordStrength, ExtCalculation, ExtExpandTextArea, KillerCarousel, JPlayer and TaxonomyFileExplorerView CpScripts.
  • It also covers the paginator, Google Map, organization chart and thumbnail viewer scripts, and the Resources and Website Links pickers in the content editor.

Pages look and behave the same.

Site-wide - the error page shows during a database outage, and handled page errors stay out of the server event log

Visitors see the site's own error page in two more cases.

  • When the database connection pool is exhausted, the error page now shows its built-in message instead of the server's generic error page.
  • An expected error raised by a page, such as a missing template or an unknown feed, shows the error page without writing an ASP.NET warning (Event 1309) to the server's Application event log.
Site-wide - form emails keep the generated PDF when the form's file path ends in a slash

Form emails again include the generated PDF when the form's FilePath ends in /. Since 8.12.14 the email went out without the file.

  • The FormManager CpScript now trims a trailing / or \ from FilePath.
  • An attachment path with a doubled slash inside it is accepted.
  • A form set to save to a folder (FileLoacation 01) with an empty FilePath now reports a clear error instead of sending without the file.
Site-wide - validators defined only by type are applied again in data transfers, generated forms and attribute selectors

Attribute validators that name only their type, with no id, are recognized again everywhere a module's attributes are read.

  • Data Transform > Data Transfer applies these validators when it writes a standard module, instead of skipping them.
  • A form generated from a module with these validators renders its required, length, range and pattern checks, instead of failing.
  • The Web API attribute selector and the module attributes page load for the Data Sources, Script Generator, Data Transfer, Manifests and System Pages modules, instead of failing.
  • A pattern validator keeps its own pattern check.
Master > Content > Scheduled Tasks - tasks for a deleted web site are skipped, and a failed master task is rescheduled

Scheduled tasks no longer repeat a failure on every check.

  • A web site task whose web site was deleted now records a Skipped process that names the missing site and says to point the task at a live site or disable it. Before, it failed on every run.
  • A master task that fails or runs past the request time limit, such as a long Backup, now moves its next run time forward. It no longer runs again on every check and holds up Clean Up and Database Maintenance.
Forms > Forms - A form that includes itself no longer takes the site down, and validator errors show their real cause

A form whose content contains its own form script now shows a message instead of stopping the website.

  • The nested copy is replaced with "This form includes itself and cannot be displayed." The rest of the page renders normally.
  • This also covers a chain, such as form A including form B, which includes form A again.
  • Development > Errors records the problem once an hour and names the forms involved, so you know which form's content to fix.

Form validator errors now show the validator's own message, such as "You must provide a valid second field name.", instead of always saying the form control may not exist. That hint now appears only when a missing control is the likely cause.

Admin > Properties - Learning Record Store (xAPI) now supports course resume and signed-in learner identity

The Learning Record Store (lrs.svc) now saves and returns xAPI Activity State, so a course can store the learner's place and read it back on relaunch. Previously the save was accepted and discarded, so learners always started over.

Behavior changes on every install:

  • Course resume: state documents are stored per learner, course and registration, and returned with their original content type. A read of a document that was never saved answers "not found" (404) instead of an empty success (204).
  • Exit saves: course players that save on tab close using the xAPI alternate request form are now accepted. They were all refused before.
  • Voiding: voiding a statement keeps the original (marked as voided) and stores the voiding statement as its own record, so voiding statements now appear when statements are read.
  • Duplicate statement ids: resending the same statement is accepted without creating a second record. A different statement under an id that is already used answers 409 (was 400).
  • PUT /statements now reports failures instead of always answering success, and uses the statementId it is given.
  • authority on new statements names the account that submitted them, not the learner.
  • With an access token, a voiding statement must name the same learner as the statement it voids.
  • Merging a state document with POST is not supported and answers 400. Use PUT.
  • Each learner can keep at most 1000 state documents. A new one over the limit is refused (403).
  • State saves are now validated. A save whose agent is not a Centralpoint user, or whose activityId, stateId, registration or Content-Type is missing or invalid, is refused with 400. Before, every save answered 204 and was thrown away. The course player treats a refused save as a failed save and keeps running, but that learner cannot resume.
  • A statement whose object has no objectType is now stored, since xAPI treats it as an Activity. Before, it was refused with 400.
  • Voiding a statement now returns the id of the new voiding statement, not the id of the statement it voids.

A new Learning Record Store (xAPI) option is available under Admin > Properties. Default keeps today's behavior. Enhanced shows three settings:

  • LRS Learner Identity: token only, signed-in learner first (token still allowed), or signed-in learner only. When a signed-in learner is used, they can only write and read their own statements and state.
  • LRS Integration Accounts: which Web API accounts may send statements with an access token (empty allows any).
  • LRS Require HTTPS: refuse access token calls over plain HTTP.
Content > GenericEnhanced modules - Document Content Attributes can now read text from scanned PDFs and image files with OCR

The Document Content Attributes module property can now read text from scanned PDFs and image files (PNG, JPG, JPEG, TIFF, BMP and GIF) with the Tesseract OCR engine, and insert it into the destination attribute of each pair (for example FileUpload1=RTFEditor1). Previously a scanned PDF produced no text, or only the junk text a scanner had hidden in the file, and image files were skipped.

OCR is off by default and is chosen per source in the new Document Content Attributes: Read with OCR property: Images, Scanned PDFs, or both. Each costs differently, and OCR runs while the record saves at several seconds a page, so only the sources a module needs should be selected. On a module whose uploads include photographs, selecting Images would fill the attribute with stray characters or empty it, replacing anything entered there by hand.

  • Scanned PDFs are PDFs that contain images where every page has fewer visible words than OCR: Minimum Visible Words (default 20). Text a scanner embeds as a hidden layer is not counted and is replaced by the OCR text. A PDF with any typed page, or longer than 25 pages, is converted as before.
  • OCR: Minimum Confidence (default 60) discards OCR text the engine is unsure of. A file that falls below it, or that OCR finds no text in, is not used: a PDF keeps its normal conversion, and an image leaves the attribute empty, clearing any text from a previously uploaded file. Clean scans of typed pages score above 90; drawings, maps and handwriting score lower and are kept out.
  • OCR text is always inserted as plain text. When OCR reads a scanned PDF, Insert PDFs as HTML? does not apply to it.
  • The two OCR settings are shared module properties listed after OOXML Extractions, so any future OCR option uses the same pair.

Handwritten pages, drawings and maps generally do not produce usable text. Details are in the OCR help file and the updated Document Content Attributes help file. The three new properties must be added to a module's properties before use.

Master > Sync Methods - web.config targetFramework is lowered to 4.8 on servers without .NET Framework 4.8.1

A site's Console could fail to start on a server that does not have .NET Framework 4.8.1 (Windows Server 2019 and older). The Console web.config targeted 4.8.1, ASP.NET refused to load it, and the site redirected to the error page with no message beyond an event 1310 in the server's event log. A new sync method, DowngradeTargetFrameworkAll, and the Centralpoint installer, repair and migrate tools now lower the setting to 4.8 where 4.8.1 is missing. Servers that have 4.8.1 are not changed, and the sync method records itself as skipped there. The method re-arms itself if a web.config that targets 4.8.1 is restored onto a server without 4.8.1, for example from a backup or a moved database.

web.config change warning. This release edits web.config files on servers without .NET Framework 4.8.1. It changes targetFramework="4.8.1" to targetFramework="4.8" on both the httpRuntime and compilation elements, in the main site (Root) web.config and the Console web.config of each website, and in the Master web.config. A secondary server in a load-balanced pair has only its Root changed. The change applies on the update that follows this release.

  • Virtual directories running as their own IIS application have a separate web.config that this release does not touch. If one targets 4.8.1 on a server without 4.8.1, change both values to 4.8 by hand.
  • Client custom code (App_Code/Custom, or a custom-code app with its own config) that sets targetFramework to 4.8.1 needs the same manual change on those servers.
Development > Web API - Upsert Data, Upsert Data From Site on Same Server and Delete Data now clear module cache

Changes Made: Records written through the Web API now clear the cache of the modules they change, the same way saving a record in the Console does. Previously, records created, updated or deleted through the Upsert Data, Upsert Data From Site on Same Server and Delete Data methods did not clear any cache, so the change was not visible on the site until the cache expired or was cleared another way. For example, a new SiteMap page added through the API did not appear in the navigation.

The cache is now cleared once per module after all items in the request are processed, both on the site and in the Console. For the SiteMap and PreferredUrls modules this also refreshes the site navigation. Clearing applies to the module each record actually belongs to: an update by DataId into a record outside the method's configured module clears that record's module, and a Delete Data request without a module that deletes records from several modules clears each of them. No change to existing requests is required.

Upsert Data From Site on Same Server now clears the Resources cache once at the end of the request instead of once per copied resource, after each resource's file extension is updated, so a changed resource file type is picked up immediately.

If a cache cannot be cleared, the request still succeeds and the response Warning notes which module could not be cleared.

Content > GenericEnhanced modules - Resource Content Attributes stores Excel workbook text far more compactly, and keeps it searchable alongside Document Content Attributes

The Resource Content Attributes module property now stores the search text of an Excel workbook (.xlsx, .xls, .xlsm, .xlsb, plus .csv and .tsv) as each distinct cell value in its visible worksheets, listed once. Spreadsheets repeat the same values down every column, so this reduces the stored search text by roughly 25% to 90%, with large data workbooks seeing the largest savings. Hidden worksheets are not included. Word, PDF and other file types continue to store their full text.

A workbook attribute is now added to the record's search content even when the same attribute is also listed in the Document Content Attributes module property. Other file types continue to skip Resource Content in that case, as before. This keeps workbook text searchable, including workbooks too large to convert to HTML.

Data Transform > Data Transfer - the FileReadAllText script now returns every worksheet of an Excel workbook as HTML, reads .xlsm and .xlsb files, and no longer repeats text for hidden worksheets

The FileReadAllText Data Transfer script has several Excel improvements.

  • Prefer HTML: with preferHtml='true', a workbook is now returned as HTML with a tab for each visible worksheet, including formatting and embedded pictures. This is the same HTML the Document Content Attributes module property produces. Previously only a single-worksheet workbook returned usable HTML (without its formatting), and a workbook with several worksheets returned no worksheet data at all.
  • Size limits: with preferHtml='true', a workbook over 25,000 cells across its visible worksheets, or 5,000,000 characters of HTML, returns an empty value. Plain text (the default, without preferHtml) is not limited, so large workbooks can still be read as text.
  • .xlsm and .xlsb workbooks are now read as Excel, in both plain text and HTML.
  • Hidden worksheets: plain text output no longer repeats the first visible worksheet's text once for every hidden worksheet in the workbook.

The script's Prefer HTML help in the Script Designer describes the workbook output and the limits.

Content > GenericEnhanced modules - Document Content Attributes now converts Excel workbooks to HTML, with a tab for each worksheet

The Document Content Attributes module property now supports Excel workbooks (.xlsx, .xls, .xlsm, .xlsb) in addition to Word, PDF and text files. The same attribute pair that converts a Word document or PDF (for example FileUpload1=RTFEditor1) now converts an uploaded workbook into HTML in the destination attribute.

  • Each visible worksheet is shown as its own tab above the workbook, in workbook order. Links inside the workbook that point to another worksheet switch to that worksheet's tab. A single-worksheet workbook is shown without tabs.
  • Fonts, colors, fills, borders, merged cells, column widths and row heights carry over, and pictures and charts are embedded in the HTML. Hidden worksheets are not included.
  • The tab styling can be overridden from the site's stylesheet through the cpxl-wrap, cpxl-tabs, cpxl-active, cpxl-section and cpxl-sheet classes.
  • Size limits: a workbook is only converted when it is within 25,000 cells across its visible worksheets (counted from the first cell to the last cell holding data on each worksheet) and 5,000,000 characters of HTML. Larger workbooks produce more HTML than a page can render and records too large to work with, so a workbook over either limit is not converted, and the destination attribute is left empty (clearing any content from a previously uploaded file). Large spreadsheets are better suited to the Excel Viewer. A workbook that is password protected or cannot be read also leaves the destination attribute empty.
  • Existing mappings: a module that already maps an attribute in Document Content Attributes will begin converting Excel workbooks in that attribute on the next save of each record, replacing the destination attribute's content.

The Document Content Attributes help article has been updated with the workbook details, the limits, and how to make workbook text searchable.

Data Transform > Data Transfer - the FileReadAllText script can now read text from image files with OCR

The FileReadAllText CpScript can now extract text from image files (PNG, JPG, JPEG, TIFF, BMP and GIF) using the same Tesseract OCR engine as the OcrZone script. The new Read Images option (isReadingImages) under the script's Advanced properties turns it on. It is off by default, because OCR is resource intensive and increases transfer time. Transfers that already point FileReadAllText at image files keep returning an empty value until the option is enabled.

When enabled, the whole image is read, including every page of a multi-page TIFF. A new minconfidence property (0 to 100) discards the text when the engine's recognition confidence falls below the threshold, so unreadable scans return an empty value instead of junk text. To read a single region of an image, or to use the character-type and case options, continue to use the OcrZone script.

OCR requires the image file to exist on disk before the transfer runs, for example a File System source's FullName column or a Standard Module upload path. Images served from a URL or SharePoint are not read and continue to return an empty value.

AI Governance > AI Providers - added Anthropic Claude, Google Gemini and Azure OpenAI as chat and summarization providers

The Knowledge Assistant, the Page Assistant and text summarization can now use three more AI providers, in addition to OpenAI and LLamaSharp. The AI Providers page at AI Governance > AI Providers shows a card for each one, with the vendor logo.

  • Anthropic Claude activates from its card with the same agreement flow as OpenAI. Usage bills to Oxcyon at first. The activation email lists the steps to move the client onto its own Anthropic workspace and API key, so each client gets its own usage report.
  • Google Gemini and Azure OpenAI use the client's own account. The client enters the API key in AI Governance > AI Properties. Azure OpenAI also needs the resource endpoint and the deployment names. These two cards show "Configure in AI Properties" instead of the agreement flow.
  • The "Works with Copilot" badge now shows on the Azure OpenAI card only. The OpenAI card no longer carries it.
  • ONNX Embedding is now the last card, and the last entry in the Embedding Models section, because it is embedding-only and rarely changed.
  • When a provider account runs out of credit, every provider now shows the same plain message in chat. A provider that is not configured stays unavailable and does not affect the others.

Existing sites keep their current provider. Nothing changes until an administrator activates or configures one of the new providers.

AI Governance > AI Providers - two newer local AI models, and local AI chat now stops when its answer is complete

Two newer local (on-premises) AI models are now available under AI Governance > AI Providers:

  • Gemma 4 E2B (Google) - the fastest local model, using about half the memory of the default.
  • Granite 4.2 3B (IBM) - tuned for business documents, with 12 languages including Spanish.

Gemma 3 4B and Granite 3.3 2B are now marked as superseded by these. Sites that use them keep working. The default local model is unchanged (Qwen3 4B Instruct). A new model downloads automatically the first time a site uses it.

Local AI chat now stops when its answer is complete. Previously, most local models kept generating after the answer, repeating or restating it until they reached the length limit. This affected the Knowledge Assistant, the Page Assistant and the AI Test Center chat. Answers are now shorter and arrive two to four times faster.

Local AI chat and summaries now also use each model's own tuned settings, including repetition controls that were configured but never applied. Chat answers and summaries from local models may read slightly differently after this update.

Master > Admin > Properties - New Update Notification Email now also receives scheduled hotfix notices

When Oxcyon schedules a hotfix for your server, the addresses in the New Update Notification Email property under Master > Admin > Properties now receive an email in advance. The email gives:

  • when the hotfix starts, in the server's own time zone, with Eastern time beside it
  • the server and the sites on it
  • one sentence on what the hotfix changes
  • the impact: sites on the server stop and restart while the hotfix installs, and are briefly unavailable

Hotfixes are normally scheduled for 11:30 PM Eastern. If the server installs a newer Centralpoint update before the start time, the hotfix is canceled. A server that only receives the hotfix once it updates to that version is not sent a notice. Until a server reports its time zone, the email shows Eastern time only. If the property is empty, no notice is sent. Separate multiple addresses with semicolons.

Centralpoint - security upgrade of the Telerik UI components (content editor, file manager, uploads)

The third-party Telerik UI components that power several built-in features have been upgraded to the current patched release. These components sit behind the rich-text content editor, the File Manager (Design > File Manager), file and image uploads, the in-editor Image Manager and Image Editor, and the dynamic role filter builder.

This is a security and maintenance update. It closes two vulnerabilities present in the previous component version (an unauthorized file-read and a remote-code-execution risk in the editor's file dialogs). There is no change to how any of these features work for end users, and existing content is unaffected. The rich-text editor opens, renders, and saves exactly as before.

The updated license is built into the platform, so no per-server licensing step is required after deployment.


IMPORTANT - FOR INSTALLS WITH CUSTOM CODE: If a client install includes custom code that directly calls Telerik UI controls or APIs, that custom code must be tested against the new component version after deployment. All standard Centralpoint functionality has been fully regression-tested; only bespoke client customizations that reference Telerik directly carry any residual risk. If you are unsure whether an install has such custom code, flag it for review before rolling out.

Centralpoint 8.12.15 maintenance run #1 - an unroutable host can redirect to a primary domain, plus form email attachment, scheduled task, data transfer, search, date and error-reporting fixes, and the 8.12.15.3 Agent and CLI

A host with no routing rule can now redirect to a primary domain. A request for a host name that has no domain rule used to end in a 404, and legacy brand domains produced a steady stream of error reports. A new Web Site Primary Domain property on Admin > Properties names the host to send those requests to. The visitor is redirected permanently, with the path, a non-default port, and https behind TLS termination kept. A request made by IP address is still answered with a 404 and never reported, and an empty value, an invalid host, or the request's own host keeps the 404. Unroutable hosts are reported once an hour as a ranked list, and an audience whose home page was retired is no longer reported on every visit.

Form emails keep their attachments. In 8.12.14 an attachment whose stored path had a stray space was refused, so the form email went out without the file. Each path is now trimmed first. A file name that itself contains a comma is still split.

Admin > Settings finishes saving when the site folder does not allow new files. Saving writes the new web.config through a temporary file, which needs permission to create a file in the site folder. Where that was denied, the save stopped after the new configuration was already live and before connection strings and the console configuration were updated. It now writes in place, and writes the original content back if that write fails. The API log-level setting uses the same fallback.

Master > Content > Scheduled Tasks - long tasks reschedule instead of repeating. A web site task stopped by the request time limit (DataBroadcasts, XMLConversion, RetentionPolicies) kept a next-run time in the past and ran again on every check. It is now rescheduled first. A data transfer stops shortly before the request limit and fails as an ordinary transfer failure, so the schedule moves on instead of the task restarting for hours. The transfer's attributes and relation counts are saved together, and the module backup flag is reset on its own connection, so an aborted chained transfer no longer leaves a full module backup to run on every later transfer.

Master > Content > Scheduled Tasks - Database Maintenance reports each database once a day. One shared budget of three reports an hour per master meant a frequently maintained staging database used it up and later databases in the same sweep went unreported.

Site search records its SQL before it runs and limits repeated terms. A search that timed out never logged the statement it ran. The statement is now logged first. A term repeated many times, as crawlers send it, is de-duplicated, and a query keeps at most 25 terms.

Dates are written to SQL the same way on every server. Dates built into SQL text used the server's regional format, so on a day-first server an update could fail or, for days 1 to 12, store the wrong date. Current-time values now come from the database, and other dates use the ISO 8601 format. This affects Data Broadcast send and unsubscribe, Policies and Procedures approval, Contextual Search date filters, the console change notification on a module edit, and Ecommerce orders.

Forms > Forms Wizard keeps a Keyword List or Taxonomy Tier choice. The saved system type was loaded into the wrong dropdown, so the choice fell back to Module on the next rebind and was saved that way.

Broadcasts - the unsubscribed recipients list no longer fails when the module has no RecipientSource attribute or no data id.

Online course tests handle the question parameter safely. The value is now escaped before it is matched and encoded when it is copied into the result redirect. A signed-out visitor is stopped before grading, and the already-passed check treats %, _ and [ in the value as literal characters.

Module view pages recover from stored form state. After a Module Designer change, a form post carrying older page state could fail a Details, Results or Home page. These pages no longer restore state they rebuild on every request, which also makes the page state smaller.

Smaller fixes. The Comments control is hidden when a Site Map page has no current record, instead of returning a 500. A preview column that looks up a table once per row now counts the table once per request. Uploading a custom attributes file that repeats an attribute id is rejected with the repeated id named. When the AI provider is out of credits, summaries, chat, and the Page Assistant tell the user to contact an administrator, and an OpenAI failure names the model. The Page Assistant debug block shows server text safely. The Uploads copy during a site data update skips the generated stylesheet cache and no longer lists server paths in skipped-file entries.

Error reporting groups related failures correctly. A refused file permission write and a rejected logon no longer share one error, a closed-connection fault is reported per call site, and a failing site data copy is no longer reported with the source path.

The Centralpoint Agent and command-line tool are updated to 8.12.15.3. The Agent now probes the canonical host under the localhost scope.

Data Transform > Data Transfer - Module Designer imports can now generate the module code files automatically (new Module Views File Handling option)

When importing Module Designers through a Data Transfer, a new Module Views File Handling option controls how each module's code files (the .ascx / .ascx.cs views) are handled during the import. Three choices:

  • Copy from path - copies the existing code files from a source directory (the previous behavior; the source path is entered in the Module Views Directory Source Files field, which now appears only when this option is selected).
  • Data only - imports the Module Designer records only, with no code files.
  • Generate files - builds the code files from the module templates during the import, so the imported Module Designers work immediately.

Previously, importing Module Designers brought in the records but required re-submitting each Module Designer by hand to create its code files. The new Generate files option removes that manual step. The option appears on a transfer whose Source and Destination are both set to Module Designers, on the Source & Destination tab.

Site-wide - Contextual Search query suggestions performance enhancements

Contextual Search query suggestions (the type-ahead list fed by AlgoliaAutocompleteIncludeQuerySuggestions) are now faster and lighter on the database, and stay that way as search statistics are rebuilt over time.

The 8.12.15 sync improves how the search statistics are stored and indexed:

  • The full-text index on the search statistics is rebuilt on a new numeric key, so it no longer accumulates leftover index data. Running the sync also clears any data already accumulated on existing sites.
  • The statistics rebuild now updates the existing statistics rows in place instead of deleting and re-adding all of them. New queries are added, and queries that fall outside the statistics window (90 days by default) are removed, so the suggestions and their counts are unchanged.
  • The suggestions index now carries the click count and last-searched date, so ranking the suggestions no longer needs extra lookups.
  • On SQL Server 2025, a search statistics index still in the older full-text format is rebuilt automatically.

The change runs once per site during the sync and needs no configuration. Like the rest of Contextual Search, it applies to SQL Server 2016 and later, and sites on SQL Server 2014 are skipped. Full-text suggestions repopulate on their own within a few minutes of the sync.

Site-wide - Centralpoint's own scripts no longer rely on 'unsafe-eval', with changes for custom DataTables, CheckInButton and FormAutoSave code

Centralpoint's own scripts no longer compile text as code at runtime. This removes Centralpoint's reliance on the 'unsafe-eval' Content-Security-Policy directive, so a site can adopt a stricter policy. Timers, JSON parsing, and the lookups that ran configured script now run as ordinary functions. Pages behave as before, with the exceptions listed below.

Custom code that may need attention

  • DataTables: custom script that calls cp_DataTables.init directly must now pass Order, Columns and ColumnDefs as values, for example Order: [1, 'asc'], rather than as quoted strings such as Order: "[1, 'asc']". The standard DataTables CpScript is already updated. A call that still passes strings stops the table from loading and reports a script error in the browser console.
  • CheckInButton: the SuccessJavascript property of the CheckInButton CpScript now runs as the body of a function. The same values are available as before (that, dataid, moduleid, attributeValue, checkedInValue, attributeName, checkedInText), and return can now be used to exit early. Existing success code needs no change.
  • FormAutoSave: the legacy mode of the FormAutoSave CpScript has been removed. A tag that still sets IsLegacyMode now uses the current auto-save behavior, which requires the form's AutoSave attribute to be enabled.
  • Page Options: each entry in the Page Options menu on Console pages now runs independently, so one malformed entry no longer affects the others.
Master > Content > Scheduled Tasks - a Sync task with no sites now logs an error instead of syncing nothing, and site-scoped tasks with no sites now fail with a clear message

A scheduled task that is meant to act on web sites but has none selected used to finish without doing anything and without telling anyone. This release reports it.

  • Sync tasks. A Sync task whose scope is "Selected" with no sites chosen, or which has no scope at all, now logs an error that names the task and says to set its sites in the Master Console. The task still reschedules and does not run. "All sites" on a master that has no web sites yet is still valid and raises nothing.
  • Other site-scoped tasks. The ClicksMerger, DataArchive, NaturalLanguageSearch and Template tasks now fail their run with a message naming the task when neither the master nor any web site is selected. Before, they ran with an empty site list. A task with the master selected and no web sites is a valid scope and is unaffected.

Masters that already have a scope on every one of these tasks see no change. A master with a task that was silently doing nothing will now show an error for it on each run until its sites are set.

Site-wide - taxonomy, audience, role and radio selector labels render their formatting again, with unsafe HTML stripped

The taxonomy, audience, and role selectors (shown when editing any content record, and on front-end forms that use a taxonomy selector) now render their intended formatting again - bold text, colors, and the hidden sort-order prefixes - instead of showing raw HTML tags as plain text. This closes the display regression introduced in 8.12.14 while keeping those labels safe: a shared safe-list allows a small set of formatting tags and strips anything else, including scripts, event handlers, and any style that could load or run remote content. This replaces the interim 8.12.14 patch, which restored the formatting but left the underlying security gap open.

This now also covers the radio-button selectors in the Module Designer - for example the Taxonomy Search attribute's options, where the "None" option previously showed its hidden sort-order prefix as literal text.

Behavior change to note: label styling is now limited to safe cosmetic properties (text color, bold/italic, font family and size). Any layout or positioning style stored in a label - position, display, margins, or screen-relative sizes - is dropped, which closes a way a styled label could overlay the page. The usual color and font styling on taxonomy labels is unaffected. Separately, label markup outside the allowed set (such as underline, superscript, or a class on a span) renders as plain text; if a client reports a label losing styling after this update, this is the cause, and the safe-list can be extended if a tag or property is legitimately in use.

Deployment note: this release pairs Centralpoint.dll and Centralpoint.Web.dll - the web controls use a shared component in Centralpoint.dll, and this now includes the radio-button selectors and the Console yes/no switches. Any patch or hotfix built from this must ship both files together, or the taxonomy, audience, role, and radio selectors will fail to load.

Admin > Global Login - new Resolve Login via RelayState option fixes "No configuration found" when multiple Global Logins share one Identity Provider

A new module property, Resolve Login via RelayState (EnableRelayStateLookup), has been added to the AuthenticationSources module (Admin > Global Login), off by default. It addresses a "No configuration found" error that can appear when several Global Logins share the same Identity Provider - for example, multiple portals under one Microsoft Entra tenant, which stamps the same Issuer on each.

When enabled, a sign-in carries the specific login's identifier through the sign-in round-trip, so if the browser session is lost (a fresh window or tab) the callback resolves the exact login that started the sign-in, instead of falling back to an Identity-Provider/audience guess that can come up empty. When off, behavior is unchanged.

This is a module-wide switch: when it is on, it applies to every SAML Global Login on the install. Only enable it when the logins that share an Identity Provider are the same trust tier, since an enabled login can be selected by any user holding a valid sign-in for that shared Identity Provider.

Master > Development > Sync Methods - the GAC repair now re-runs on a migrated or rebuilt Windows Server 2025 master, and the new Centralpoint.exe gac command fixes a shadowed GAC on demand

On a Windows Server 2025 master, an old copy of a shared library (such as Newtonsoft.Json) in the Windows Global Assembly Cache (GAC) can take precedence over the site's own copy. The Master Console then stops with a server error. Centralpoint has a repair for this, but it was recorded as done in the master database. A master built from a copied database therefore never ran the repair on its new server.

  • Master > Development > Sync Methods now moves the GAC repair back to New when the server's GAC still disagrees with the site's copy. The repair then runs on the next version install, a retry from Server Hub, or a run from the Explorer view. A site sync never runs it.
  • The repair now checks the server again after it finishes. If a stale copy remains, it reports Failure instead of Success, so an unsettled repair stays visible.
  • The Windows version check for these methods now reads the server's real Windows version instead of a value saved at install time. A database copied from an older server no longer gates on the wrong version.
  • New command Centralpoint.exe gac screens every Centralpoint site folder on the server and refreshes any stale GAC copy. It works while the Master Console is down. Use --what-if to report only, with no changes and no administrator rights. Without --what-if, the command asks for administrator rights.
  • install, migrate and repair now run the same screen. A failed screen shows a warning with the command to re-run, and the run continues. repair --dry-run previews the screen without changing anything.
  • When the GAC changes, gac and repair restart IIS once so no worker keeps the old copy in memory.
  • If two site folders ship different builds of the same library, the screen refuses to change the GAC and names both builds. Align the folders, then run it again.
Master - calls to the Master web services are now signed and checked; unsigned calls are logged, then refused once every site, the Agent and the CLI are on 8.12.15

The Master web services folder used to accept calls from anyone, with no sign-in. That included methods that run updates and sync methods, create and restore backups, run scheduled tasks, and start processes. Every call to the Utilities, SyncInvokeMethods and ScheduledTasks web services now carries a signature, and Master checks it. The site Console, the site pages, the Agent, Centralpoint.exe sync-method run and Master's own update install all sign their calls. The Agent and the CLI move to 8.12.15 with this release.

How the rollout works. Sites often sync after Master updates, so Master does not refuse unsigned calls at once. While any site on the install is below 8.12.15, Master serves an unsigned call and logs it under Development > Errors with the key MasterWebServicesAuth:Unsigned. The entry names the endpoint, the method, the caller address and the reason. Master starts refusing unsigned calls (HTTP 403) when all of these are true: every site is on 8.12.15 or later, Master has verified a correctly signed Agent call in the last 24 hours, and the installed CLI is 8.12.15 or later. Master rechecks every 5 minutes. No setting turns this on or off.

Sign-in for three more services. ClientMethods, ProcessMonitoring and WebSiteBackups now need a signed-in Master session. Master admin pages already call them from a signed-in browser, so admins see no change. A script that polled ProcessMonitoring without signing in now receives the sign-in page.

SOAP 1.1 only. These endpoints now accept SOAP 1.1 only. SOAP 1.2, form posts and .asmx/Method style calls count as unsigned, because the signature binds to the SOAP 1.1 SOAPAction header.

Custom code. Custom code that builds Master.Utilities directly sends unsigned calls. Master serves and logs them now, and refuses them once the install enforces. Change such code to SignedMasterUtilities, which sets the Master address and signs the call. Page.Master in the site Console and Root already returns a signed proxy. The site cache methods RemoveCache and RemoveMemoryCache also check the signature now. These methods send no reply, so an unsigned caller sees no error. The site records the refusal in Development > Errors as "Rejected unauthenticated ... call".

Configuration change. One file changes: Master's WebServices\Web.config. It removes the folder-wide "allow all users" rule. It adds "allow all users" only for Utilities.asmx, SyncInvokeMethods.asmx, ScheduledTasks.asmx, Services.svc and DevOps.svc. It also removes the HttpSoap12 and HttpPostLocalhost protocols. The update package ships this file, so no sync method applies it. No site web.config changes, and a virtual directory that runs as its own IIS application keeps its own web.config.

Impersonation cleanup. Master now always ends administrator impersonation when an operation fails partway. Before, a failure could leave the worker thread running as the administrator for the next request.

Data Transform > Data Transfer - SQL Server sources no longer run their source query while a transfer is being edited

Editing a Data Transfer record with a SQL Server source is now much faster and places far less load on the source database.

Previously, the Data Transfer form ran the full source query many times during an ordinary edit, not only when the transfer itself ran. Opening a record ran it once, and moving between the General, Source & Destination and Fields steps ran it again, up to three times per step. A typical edit session ran the source query about 12 times before anything was transferred. For a source that reads a large table, each of those runs took as long as the transfer itself, so editing one record could keep the database busy for minutes and slow down the rest of the site.

The form now only checks the source's column names and types, which SQL Server answers without running the query or reading any data. That check takes a fraction of a millisecond regardless of how large the source is. The same walk through the form that used to run the source query 12 times now runs it 0 times.

  • Opening, navigating and saving a record no longer runs the source query.
  • Show Source Sample on the Fields step now fetches the sample only when the button is clicked. It is the one place in the form that still runs the source query, because a sample needs real rows. Once loaded, the button shows and hides the sample without running it again. Unsaved field mappings are kept, and an unfinished mapping no longer shows validation errors when the sample is loaded.
  • Scheduled and Execute Now transfers run the source query once per run, where they previously ran it twice. Statements that a source runs after its main query, such as a stored procedure that marks rows as exported, still complete as before.
  • Validation messages for invalid SQL (a syntax error or a missing table) are unchanged and still appear immediately.

A small number of sources cannot be checked this way, most commonly queries that use temporary tables or build their SQL dynamically. Those continue to run the query during editing, exactly as before.

A blank Source Select Command is now rejected with the message "You must select a valid Source Select Command." (or "enter" for ODBC, OLE DB and Oracle sources) instead of a technical error. A transfer with a blank select command could never run, so no working transfer is affected.

Site-wide - Centralpoint CLI repair now keeps scheduler and site URLs that work and replaces only ones that fail

The Centralpoint CLI repair command no longer rewrites the Agent scheduler address (Agent:SchedulerUrl) on every run. Before, repair rebuilt it from the first IIS binding and assumed https whenever a host header existed. On a Master with only an http binding, or with a certificate that does not match the default host name, this left scheduled data transfers unable to connect, and each repair put the broken address back. Now repair tests the current address from the server itself, using normal certificate checks. If it answers, repair leaves it unchanged, which also keeps a value an operator corrected by hand. If it fails, repair replaces it with the first address that does answer: the Master Api.Base.Url, then each https binding, then each http binding. An https address that fails is never downgraded to http. When nothing answers, repair keeps the current value and prints a warning that scheduled tasks will not run until the Master site is reachable. Each change prints as old -> new.

The same rule now applies to the Development site's Master and API addresses (Api.Base.Url.Master, Master.Utilities, Api.Base.Url, Cda.Utilities, Console.Utilities). Repair changes a key only when its address fails, and it backs up web.config first. If the Development appSettings section is encrypted, repair writes nothing and prints the steps: set Protected to No, re-run repair, then set Protected back to Yes. The https or http scheme now comes from the https binding that exists, not from the host header. Changing the domain with repair --domain still moves every address to the new domain.

This change is in the CLI only. It does not add a version bump or a sync method, and it ships with the 8.12.15 CLI.

Development > Errors - Delete now works for every error on the list, on the site Console and on Master, and tells you when an error could not be deleted

The Delete button on the Errors page (Development > Errors, on the site Console and on Master) now removes any error in the list. Before, only errors marked low priority could be deleted, and the checkbox for every other error was disabled. The Delete button on an open error now deletes that error. Before, it acted on the checkboxes in the list behind it. Deleting only affects your own errors: on a site Console it covers that website's errors, and on Master it covers the errors for the whole master. If some of the selected errors could not be deleted, a message above the list says how many, for example "Not deleted: 1 of 2 selected errors. They were already deleted or cannot be deleted from this site." If the delete itself fails, the page says so, and none of the selected errors are removed. Sites on a version earlier than 8.12.15 can no longer delete errors from this page. Delete shows an error page there until the site is updated.

Site-wide - the FormZipFileToDirectory CpScript's zip deletion is now hardened

Security hardening: a form using FormZipFileToDirectory can now only delete the zip that was just uploaded to it, not zip files or Resources that other people uploaded earlier.

The FormZipFileToDirectory CpScript extracts the zip named by its target upload field into Uploads\FormZipFileToDirectory. With Is Deleting Zip? enabled (the default), it then deletes the zip. That deletion exists so a zip uploaded only to be unpacked does not linger on disk or in Resources: someone uploads a zip, submits the form, and only the extracted files remain.

The zip path comes from the submitted form, so a modified submission could name a different zip, such as an existing file under the site or any zip Resource, and have it deleted along with its Resource record. Two safeguards now prevent that:

  • Deletion is limited to a zip written within the last 10 minutes, which covers the normal upload-then-submit flow. A zip submitted after that window, or one carrying a future file date, is still extracted but is left in place, with a trace warning recording the skipped deletion.
  • A plain file path is only accepted when it points into the site's Uploads folder. Paths anywhere else on the site are ignored, so no extraction or deletion takes place for them. Zips uploaded as Resources are unaffected apart from the 10-minute deletion window.

The form itself never fails because of either safeguard. When one applies, the only effect is a zip left on disk.


Centralpoint Update 8.12.14
Tuesday, September 8, 2026
FeatureSummary
Admin > Global Login - SAML logout no longer shows a server error when there is no active SSO session, and inbound sign-in certificate/configuration problems are now reportedTwo improvements to SAML single sign-on, configured under Admin > Global Login.

Logout: When a user entered the portal through seamless SSO (already signed in to their identity provider, with no active federated session on record), clicking Logout could return a server error page instead of signing the user out. Logout now completes normally in this case: the user is always signed out of the portal locally, and if a federated sign-out cannot be sent, that no longer produces an error page.

Inbound sign-in: When an incoming SAML sign-in fails because of a certificate or configuration problem (for example a mismatched or expired identity-provider certificate, or an assertion that fails signature verification), the problem is now reported to administrators in the error log with a description of what to check, instead of failing silently.

No configuration changes are required. Sites using SAML SSO receive the improved behavior automatically.
Master > Content > Scheduled Tasks - notification emails no longer expose task credentialsScheduled-task notification and error-notification emails support placeholder tokens that insert a task's saved settings into the message. Previously, if a notification template referenced a credential-bearing setting - for example a source database connection string - the email (and the process log appended to it) rendered that value in full, including the password.

Those values are now redacted before the email is sent. A connection string keeps its server and database but the password is replaced with REDACTED, and any setting named like a secret (password, key, and similar) is masked entirely. Normal, non-credential placeholders are unchanged, so existing notification templates render exactly as before apart from the credential values. This applies across all scheduled-task types that send notifications (including Data Update, Data Transform, Clean Up Files, and Report Builder email) and to the task error-notification email.
Content > GenericEnhanced modules - new PDF Pre-Generation module property converts saved files to PDF ahead of the first viewGenericEnhanced modules have two new module properties, Is PDF Pre-Generation Enabled? (default No) and PDF Pre-Generation Attributes. When enabled, saving a record queues the files in the listed attributes (for example FileUpload1,FileUpload2), and the Master application converts them to the cached PDF that the PDF flipbook viewer and other PDF tools use, so the first visitor does not wait for the conversion.
  • The save does not wait for the conversion. Conversions run in the Master application one file at a time across the whole server, and a burst of saves, such as a Data Transfer with Use Console Utilities, is handled by a single run.
  • Applies to saves in the Console and to Data Transfers that use Console Utilities. PDF files and unsupported file types are not queued.
  • A file that fails is attempted up to 3 times and then kept as a failed entry; saving the record again queues it again. Queue entries are removed after 30 days.
  • If the Master application is unavailable, the files wait in the queue for the next save or the next Temp PDF File Generator run.
  • Conversions run during working hours and share the server with daytime traffic, so this option suits modules with light, steady saves. For large modules and bulk imports, the Temp PDF File Generator scheduled task is recommended instead.
  • Results appear in Master > Development > Process Log under PDF Conversion Queue.


Full details: Pre-Generating PDF Conversions
Master > Content > Scheduled Tasks - new Temp PDF File Generator builds cached PDFs ahead of the first viewA new Temp PDF File Generator scheduled task builds the cached PDF that the PDF flipbook viewer and other PDF tools create the first time a document is opened, so no visitor waits for a large Word, Excel, PowerPoint, Visio, image, email or HTML file to convert. It is the recommended way to pre-generate PDFs, and is meant to run off-hours on a recurring schedule.
  • Settings: Web Site, Modules, Attributes (the attributes that hold relative file paths or Resource.ashx links, for example FileUpload1, FileUpload2) and Maximum Execution Time (Minutes).
  • 4-hour limit: a run never exceeds 4 hours (240 minutes; 0 uses the full 4 hours). Files a run does not reach are generated on its next run, because each run skips files that are already cached.
  • Process log: each failed file is logged with its path and error, and a Sweep - Checked / Converted / Already Cached / Skipped / Failures summary is written every 25 files or 5 minutes and at the end. Before its sweep the task also processes files queued by the new PDF Pre-Generation module property (logged as Queue - ...).
  • Not pre-generated: PDF files (served as they are) and watermarked views (built when viewed). Files in a virtual directory are pre-generated only when the same virtual directory is also mapped on the Master application, to the same folder.
  • Cached PDFs are removed by the monthly temporary-file cleanup, so the task should recur


Full details: Pre-Generating PDF Conversions
Master > Content > Scheduled Tasks - new Integrity Scan option on the Data Update taskThe Data Update ("My Update") scheduled task has a new optional Integrity Scan. After the task moves Media Manager resources, when Integrity Scan is turned on it checks the content it maintains for attachments that are broken on the destination site - either the attached file is missing, or it opens a different file than the source site holds. It reports a summary (how many missing, how many wrong-file) and lists each flagged record to the task's process log and, when Notification is on, the notification email, so an admin can locate the article and replace the attachment. Module names for the flagged records and the full missing list are also available in the error system and via a SQL report.

The new options appear under Media Manager (Resources) on the task, when Resources is set to Yes:
  • Integrity Scan (Yes/No) - turns the check on.
  • Integrity Scan Module Ids - optional comma-separated list of module ids to limit the scan (leave empty to scan recently changed content instead).
  • Integrity Scan Date Offset (days) - when no modules are listed, how far back to look (default 90).


The scan is read-only: it reports, it does not change the transfer or the content. This release also improves Data Update reliability - it raises an alert when a run repeatedly cannot make progress (instead of silently retrying), and the resource move is faster on tasks with many attachments.
Data Transform > Data Transfer - a failed bulk transfer now records the affected records and the underlying errorWhen a Standard Module data transfer using the Bulk (insert-only) method hits an error while writing a batch of records, it previously reported only a generic failure and moved on, leaving no record of which rows were affected or why. It now records how many records the failed batch held and lists their DataIds (up to 40), and the transfer's execution log preserves the underlying cause of the error rather than only the outer "cannot access destination table" message. The failure alert also names the safe way to recover - delete the batch by its BatchId, then re-import - because a re-run can otherwise either duplicate content or collide on the primary key. This is a diagnostics and recovery improvement only - there is no configuration change, and a normal, fully successful transfer behaves exactly as before.

If you have a custom report or Data Source that filters the transfer execution log by its error-message text, note that the stored message now leads with the underlying cause, so a filter written against the old outer wording ("cannot access destination table...") may need updating.
Site-wide - document previews no longer share one cached copy when the file is stored outside the website folderDocument previews are cached so a file only has to be converted once, and that cache was organized by the document's folder path within the website folder. A document served from somewhere else - an IIS virtual directory such as a document library on a network share, a UNC path, or a mapped drive - had no such path, so its preview was stored under the file name alone. Two documents with the same file name in different folders therefore shared a single cached preview, and each could display the other's content. The file name shown on screen stayed correct, which is why this tended to read as an out-of-date document rather than the wrong one.

Previews for these documents now go in a folder named _External under the site's Temp area, organized by the path the document is requested from, so every document gets its own cached preview. A preview that already exists is moved into the new layout the first time the document is viewed rather than being regenerated, so a site with a large document library does not reconvert everything after the update. Documents stored inside the website folder keep their existing cached previews and are unaffected, with two rare exceptions noted below.

Three related fixes ship with it. The Download and Export options in the Excel viewer now work for documents stored outside the website folder; previously they returned an error for exactly those documents. And a preview that could not be delivered because the file was momentarily locked - typically an antivirus or indexing sweep touching a newly created preview - is now retried briefly instead of immediately showing the error document. Finally, thumbnail images for documents stored outside the website folder now generate at all; previously they came back blank, because the thumbnail generator looked for the file inside the website folder regardless of where it actually lived. Thumbnails follow the same _External layout described above.

Three situations can cause a one-time reconversion of previews that already exist. Rolling Centralpoint.Web.dll back after the update makes the moved previews invisible to the older code, so schedule a rollback on a document-heavy install for a low-traffic window. Custom code that asks only for a preview's storage folder, rather than going through the standard preview entry point, will not find previews it created before the update. And two uncommon site layouts re-key their previews rather than keeping them: a site whose website folder is not spelled Root exactly, and a site with a content folder of its own named _External. In every case the effect is that affected documents convert once more on next view, not that anything is lost.
Word Add-In - attribute dropdown now lists upload fields and shows their friendly namesChanges Made: The Word Add-In's document save form reads a module's file-upload attributes to fill its attribute dropdown. Two fixes: the dropdown could come back empty for modules whose attributes use the standard layout, and it now lists the upload fields correctly; and each option now shows the attribute's friendly name (e.g. Wallpaper) instead of its system name (e.g. File). Where a module has a custom attributes file that renames an attribute, the picker now shows the custom name, matching what the Console editor shows. Options are sorted alphabetically. The same shared reader powers the Source Attributes picker under AI Governance > AI Indexing (Edit Configuration), which now shows correct attribute names and classifications for the same reason. The value stored on save is unchanged, so existing documents and integrations are unaffected.
Development > Process Log - process status text now HTML-encoded at display (stored-XSS fix)The Process Log page and the process-monitor progress window now HTML-encode process status and step text when displaying it. This closes a security issue (stored XSS) where text shown in a process status — client names, file or column names, or error text — could run script in an administrator's browser. Status text is no longer rendered as raw HTML.

Standard status messages, and simple inline formatting (bold, italic, and line breaks), continue to display normally. Failure highlighting, download links, and read-only copy boxes are preserved through the built-in status helpers.

Custom code that builds its own HTML into a process status — for example alert-styled highlighting or a hyperlink — will now show that markup as literal text, and hand-built links will no longer be clickable. Such code should switch to the built-in status helpers: SetAlert for highlighted failures, SetLink / SetDownloadLink for links, and SetTextArea for read-only copy boxes. No change is needed for plain-text status.
Development > Errors - CpScript and Data Source timeouts are now detected reliably and name the record involvedQuery timeouts raised by a CpScript, the DataSource module, or the Personal Dashboard Data Source gadget are now identified by the database error number rather than by looking for the words "timeout expired" in the message text. Two things improve as a result. A timeout that was wrapped inside another error was previously missed entirely, along with its diagnostic entry, and is now recorded. In the other direction, an unrelated failure whose message merely mentions a timeout - a full-text search engine failure lists "timeout" among its own possible causes - is no longer filed as a query timeout, so the entry under Development > Errors now reflects what actually happened. The diagnostic entry also carries the DataId of the data source involved, so the record can be identified directly instead of being tracked down by hand.

Separately, the Delete action on Development > Errors is now applied on the server as well as in the page. There is no change to what you can delete through the console - the Delete button and row checkboxes already reflected which entries are removable - but the same rule is now checked when the request is received.
Site-wide - checkbox and radio button lists now encode stored text before display (security)Following the recent update that encoded multi-select list labels, the remaining list controls now do the same. Checkbox lists (such as the tenant picker in the Data Transform > Data Transfer Fields editor and in Search All Modules, and the tiered audience/role selector used across the console) and radio button lists now encode any HTML or script characters in database-sourced item labels before displaying them, so the characters appear as literal text instead of being interpreted by the browser. No configuration change is required; the fix applies automatically once the update is in place.

Behavior change to be aware of:
  • Radio or checkbox option labels that intentionally contained HTML markup (a styled label, or a link inside an option) will now show the tags as literal text rather than rendering them.
  • Client custom code that added its own HTML-encoding to radio/checkbox item labels should remove it, since the controls now encode once at display. A leftover manual encode shows literal < characters (display only, not a security issue).

Centralpoint 8.12.14 maintenance run #2 - CMS templates tolerate a stray brace, plus site search, document preview, relation population and Master sync fixesCMS text used as a template no longer fails on a stray brace, and format codes now work. Several attributes are filled in by an administrator and then have values merged into them before they are sent or displayed. Previously a { or } typed anywhere in that text could stop the whole operation, and a format code such as {0:d} on a date was not applied. Both are fixed across the sign-in and account emails (MfaTotpHeaderContent, MfaEmailBody, MfaTextMessageBody, LoginPasswordEmailBody, SendPasswordChangeEmailBody), the Admin > Global Login OwaUsername mapping, module view ErrorItemContent, the details-page email form (EmailSubject, EmailBodyHtml), marketplace comparison emails, and record URL templates.

Site search results no longer break on a brace in content. On Site Architecture > Search Page Designer, the ResultsItemContent template and the record content merged into it shared a single formatting pass, so a brace in any title or abstract stopped the whole result list from binding. A brace in record content is now displayed as typed.

Admin > Settings no longer blanks the upload and data limits. When the underlying configuration could not be read, the upload and data limit fields were treated as empty and saving removed them. An unreadable configuration is now reported instead, and the existing limits are left alone.

Bulk file upload no longer fails after routine cleanup. The staging folder a bulk upload writes into is empty until files arrive, and the site's temporary-file cleanup removes any empty folder regardless of age. The folder is now recreated when the page posts back, so an upload started after a cleanup still succeeds.

Document preview is more reliable under load. Two people opening the same document at once each converted a full copy, and the slower conversion could replace the file the faster one was still sending. Conversions are now serialized per document. A conversion that hangs no longer holds later requests open indefinitely, and the memory used to coordinate them is now fixed rather than growing for as long as the site runs.

Relation population no longer produces duplicate rows. Two populations of the same module could interleave and duplicate each other's rows. They are now serialized per module, so unrelated modules sharing a table are unaffected. A population that waits on another and gives up is now reported as contention rather than as a damaged relation needing manual repair, which previously produced an urgent alert with repair instructions for a relation that was in fact correct.

Master > Content > Scheduled Tasks - a database outage no longer disables a working task. When the database was unreachable, the attempt to record the failure failed for the same reason and the task was reported as broken and disabled. Such a task is now left enabled and retried.

Master > Deployment > Synchronize - a Master that cannot build is now named as the cause. A Master whose code does not compile answered the sync call with an error page, which was previously reported as the sync endpoint being unreachable and sent people to check the URL. The message now says the Master does not build and points at the code, and skipped sync methods report their real status.

Master nightly cleanup completes when a SQL service account cannot be resolved. On a remote or named SQL instance the default service account does not exist locally, and trying to grant to it stopped the whole cleanup. It is now skipped with a clear message, the selection is saved so it is not reapplied, and the account used for impersonation is always restored afterwards.

Install and migrate no longer report every scheduled task as overdue. An imported database carries the next-run times it held when the package was captured, so a new install reported every built-in task as hours late. Past-due tasks are now made due shortly after startup, spread over a short window so they do not all run at once, and each task then returns to its own schedule.

Error reporting groups related failures correctly. SQL connectivity failures and Windows security-service outages now group under the errors that already cover those conditions instead of creating separate entries, and an API error that is recorded in Centralpoint no longer also fills the server's Windows event log.

The Centralpoint Agent and command-line tool are updated to 8.12.14.1.
Admin > Settings - required fields are now enforced on save, and invalid values are blocked before they reach web.configThe Settings page carried field validation that never ran. The page's fields were checked against a different validation group than the Submit button uses, so the checks were skipped on every save and the page reported success regardless. This affected both Admin > Settings in the console and Master > Admin > Settings.

Validation is now active, and applied only to the settings that are genuinely required. A setting whose value must be present for the site to start is now blocked when cleared, and in several cases the shape of the value is checked as well:
  • Connection strings - cpsys_Select and cpsys_Execute must have a value.
  • Machine Key - the Validation Key and Decryption Key must be present and must be valid hex values of the correct length. Entering AutoGenerate is rejected, because it causes the key to be regenerated on every application start, which signs out every logged-in user.
  • Master Id - must be present and a valid GUID, in any of the standard GUID formats.
  • Master Root - must be present. An empty value previously failed silently rather than raising an error, which made it harder to diagnose.
  • Check Frequency Minutes - must be a whole number of 1 or more. A value of 0 caused the remote security check to run on every page request instead of disabling it. Values above 1440 are still accepted and treated as 1440 (daily).


Settings that may legitimately be empty on a given installation - such as the Telerik Skins Assembly, the email user name and password, and the error notification address - are deliberately not required, so they can still be cleared and saved.

A second check now runs at save time, immediately before the configuration file is replaced. If a value would prevent the site from starting, the save is refused and the existing configuration is left untouched. This is a safety net behind the on-screen validation, not a replacement for it. It does not apply when the configuration is encrypted (the Protected setting is yes), where the on-screen validation remains the only check.

The same corrections have been applied to the Master settings page.
Data Transform > Data Transfer - SharePoint list attachments can now be stored as role-protected ResourcesA SharePoint List Attachments transfer stores each downloaded file under /Uploads/SharePointListAttachments and maps its path through the LocalPath column, which offers no way to restrict who can open the file by role. A new AttachmentToResource CpScript stores each attachment in the Media Manager instead, where access is checked against roles on every request.

To use it, open the attachments transfer's Fields tab and map the AttachmentToResource script to the destination attribute that currently takes the LocalPath column, in place of that column. The script downloads each attachment straight into the Media Manager and returns its /Resource.ashx link as the attribute's value, so existing pages that render the attribute keep working. The parent SharePoint List transfer is not changed.

The script has three properties:
  • Resource Roles - a comma-separated list of role system names (found under Admin > Roles) allowed to open the files. Left blank, every resource carries the Private role, which means any signed-in user can open it and anonymous visitors cannot. Naming roles restricts access further. Where the destination website has Role Filtration And Security turned on, a user must hold every role listed rather than any one of them. A name that does not exist is reported once and no resources are written for that run; the mapped attributes are left empty until the name is corrected and the transfer run again, which restores them. The public files are never removed while the value is unresolved.
  • Resource Audiences - audiences assigned to each resource. Defaults to All Audiences.
  • Resource Url By System Name - returns the readable ?sn= form of the link. On by default.


The transfer keeps the matching Uploads directory clear on your behalf. Once a resource exists for every attachment the transfer tracks, it removes the copies it has replaced under /Uploads/SharePointListAttachments/{ListId} and reports how many went. This is not a one-time migration step; the directory is kept clear on every run. The cleanup is deliberately cautious, because deleting those copies cannot be undone: it runs at the end of a transfer, and only once every tracked attachment has a resource standing in for it. A run cut short by LimitWrites or SkipWrites, aborted from the console, or carrying any failed write leaves every Uploads file exactly where it is and says why in the status.

Applying the script also changes what the transfer removes. It begins deleting destination records for list items that are no longer in SharePoint, or that no longer carry attachments, along with the Resources belonging to them; without the script those records stay in place. Removing the script later does not undo this cleanly: the transfer returns to writing files under /Uploads, but every Resource already created stays in place, still reachable by its URL, and is no longer removed when its attachment leaves SharePoint, so those must be deleted by hand in Design > Media Manager.

Note that Resource Roles here takes role system names, while the identically named property on the existing FileDownloadToResources script takes role ids. Resource Url By System Name likewise defaults on here and off there. The two scripts are not interchangeable in this respect.

Two further behaviors are worth knowing before the first run. Where two attachments transfers pull the same SharePoint list into different modules they share one Uploads directory, so the run refuses and names the other transfer until it is converted as well. And roles and audiences are re-applied from the script properties on every run, so a role added by hand in the Media Manager is replaced the next time the transfer runs.

One behavior change reaches the existing FileDownloadToResources script as well, which shares the same resource-writing code. A download that completes but leaves an empty file is now refused: no resource is created and the transfer reports an error, where previously a zero-byte resource was created and its link returned. A source that legitimately serves empty files will see those rows reported as failures instead of written.

When an attachment disappears from SharePoint the resource follows it, whether a single attachment was deleted, the whole list item was deleted, or the item remains with no attachments left. A resource still referenced by a versioned or archived record is kept and reported rather than treated as an error.

The Help article for Data Transform > Data Transfer has been extended with a Storing Attachments as Protected Resources section covering setup, the properties, the Uploads cleanup and troubleshooting. Full documentation on this transfer and feature can be read there: SharePoint List Attachments.
Data Transform > Data Transfer - clean Users transfers are no longer flagged as having errorsWhen a Users data transfer completed successfully it could still be reported as finishing with errors, even though nothing had failed. The run's health check was scanning the descriptive status text it writes during the run, and words like "Error", "Exception" or "Failed" appearing inside column or field names were misread as actual failures. The health check now ignores that descriptive text and looks only at real run outcomes, so a transfer that completes cleanly is reported as clean. Transfers that genuinely fail still report errors. No configuration change is required.
Site-wide - stored text is now encoded before display in the Data Transfer Fields editor, the process monitor, and multi-select lists (security)Several places that display text drawn from imported data or stored records now encode that text before showing it, so any HTML or script characters in the text appear as literal characters instead of being interpreted by the browser. This covers three areas: the column names shown in the Data Transform > Data Transfer Fields mapping editor, the status text shown in the process monitor popup and on the Process Log, and the item and group labels in multi-select list controls used across the console and site (for example reviewer and module pickers). Behavior is otherwise unchanged and no configuration change is required; the fix applies automatically once the update is in place.
Master > Development > Utilities - site backups now make room before writing, check free space first, and stop the whole run on a full diskProgress is now reported while a single large file is being added. The previous release added a running count of files and megabytes during the archive step, but that count only moved between files. A site containing one very large file could still go silent for the entire time that file was being compressed - long enough for a healthy backup to be treated as abandoned. The count now advances while a single file is being written, so the backup is visibly working throughout.

Retention now runs before the new archive is written, and free disk space is checked first. Previously the old backups were removed only after the new archive had been written, so the disk had to hold a complete extra copy at peak. Retention now removes the surplus first, always keeping at least one complete archive, and the backup then confirms there is enough free space before it starts - measured from the most recent archive plus the existing database backup, with headroom added. If there is not enough room, the backup names the shortfall and stops rather than failing part-way through. The new archive is also written under a temporary name and only takes its final name once it is complete, so a backup that fails leaves nothing behind that could be mistaken for a usable one.

Correction to the earlier backup note in this release. That note stated that if any file was skipped, the retention limit is not applied, so existing good backups are kept. That is no longer accurate. Because retention now runs before the archive is written, it has already reduced the retained backups to one below the configured limit by the time the outcome is known, so a run that skips a locked file keeps one fewer complete archive than it did before. The configured limit is still applied, and at least one complete archive is always kept.

A full disk now ends the whole run and sends one notification. When a master backs up many sites in one run, running out of disk space affects the server rather than one site. The run previously continued into every remaining site, each of which failed the same way, and sent a separate email for each failure. The run now stops at the first out-of-space failure, records the sites it did not attempt, and sends a single notification naming both the sites that failed and the sites that were skipped, each with a link to its Backup Exclusions settings. A failure affecting only one site still lets the run continue, as before. Backing up a single site from its own console is unchanged and still notifies immediately.
Site-wide - a failed save no longer deletes the document unless its own data caused the failureWhen a record was saved and Centralpoint could not populate its relations afterwards, the record was deleted and the user was told that its attribute values were bad. That message was reported for every cause, including ones that had nothing to do with the record: a request that timed out, a dropped database connection, a relation table that had drifted from its definition, or a storage fault. In those cases a valid record was removed and the explanation pointed the user at the wrong thing. Centralpoint now checks what actually failed before removing anything. A record is deleted only when its own attribute values caused the failure, which is the long-standing case where module configuration hides a required and validated attribute without a valid default. For every other cause the record is kept, and the message says plainly that the record was not deleted and that the save can be retried. The recorded error now also carries the underlying cause and a short triage note, so a repeated failure can be diagnosed without reproducing it. A related change covers the education report data trigger, which previously removed a record without reporting anything at all when its relation update failed. It no longer removes the record, and the failure is now reported. Error reporting is also more accurate: a save interrupted by a request timeout is now recorded as a timeout rather than as a relation problem, so these are no longer counted together.
AI Governance > AI Indexing - unenroll now shows progress and the module moves to Available immediatelyUnenrolling a module from AI Governance > AI Indexing now gives feedback while it runs. Removing a large module deletes its chunks in batches and can take several seconds, during which the confirm button previously stayed live with no indication anything was happening - so the dialog read as unresponsive and a second click could start a redundant removal. The confirm button now disables and shows a spinner reading "Deleting...", and the dialog cannot be closed by the X, Cancel, or the Escape key until the removal finishes.

Both tabs now refresh when it completes, so the module visibly moves from Enrolled Modules to Available Modules without a page refresh. Previously only the enrolled list reloaded, so the module appeared to vanish and then reappeared under Available on the next visit, which read as "still indexed".

If the removal runs past the allowed time, the message now says the module was partly removed and to click Unenroll again to finish, and the enrolled list refreshes so the record count reflects what was actually deleted. The removal is safe to re-run and picks up where it stopped.

On a server that does not support vector indexing, the Available Modules tab now explains that indexing is unavailable instead of sitting on "Loading available modules..." indefinitely.

The Force Reindex confirmation now describes what actually happens - the work runs while the dialog is open, in batches of 200 records - and if it runs past the allowed time it now says the records already processed are saved and to click Force Reindex again to continue, rather than telling the user to wait for a background process.

Also on AI Governance > AI Data Source Tuner: pressing Ctrl+Enter twice in quick succession no longer sends a second request or leaves the Run preview button stuck showing "Matching...".
Site-wide - source-editor fields stay editable when the browser cannot run the code editorConsole fields that use the code editor rendered nothing to type into on a browser too old to run it. This affected Select Command and Attributes on Reporting > Report Builder, Tools > Actionable Select Command Builder, and Site Architecture > Search Page Designer. The field appeared on the page but would not accept typing or pasting, and nothing was reported to the user.

These fields now fall back to a plain text box whenever the code editor cannot run. The value is typed, pasted, and saved exactly as before, so console work is no longer blocked by the browser version. On a current browser the code editor loads as it always has and the plain text box never appears.

Two related corrections ship alongside it. AI summarization on these fields now reads what is currently typed rather than the value the page loaded with. The required-field checks on Tools > Actionable Select Command Builder no longer fail in the browser, so a missing Select Command is reported normally.
Master - password-expiry scheduled task no longer clears users' authentication source, group, and local-account settingsThe scheduled task that expires user passwords was overwriting several account fields on every user it processed. Each time it ran against a website, it reset the affected users' authentication source link, stored authentication credentials, group assignment, and local-account flag — settings unrelated to password expiration. For users who sign in through an external identity provider (SSO) or who belong to a group, this silently removed that configuration on every run, which could break their sign-in or group-based access until it was reconfigured. The task now preserves these fields and only updates the password-expiration state. No configuration change is required; the fix applies automatically once the update is in place.
Master > Content > Scheduled Tasks - lock now holds a live long-running task instead of restarting it, with new operator signalsLong scheduled tasks on a Master (the overnight Data Update, backups, cleanup) are guarded by a lock so two runs cannot overlap. Previously the lock was judged stale purely on age (1 hour), so a healthy multi-hour run — a Data Update can now take 4+ hours — could be treated as abandoned and restarted on top of itself if a second application worker appeared (for example during an app-pool recycle), with both runs writing the same databases.

The lock now stays in place while a run is still recording activity, and clears only once activity has stopped, so a long run is no longer restarted while it is working. A truly abandoned lock still clears and the next run proceeds, as before. A safety ceiling bounds how long a lock can be held.

This introduces new, self-explaining messages in Master > Development > Errors. What each one means:
  • Scheduled task lock file held past 1h ... and ... is N hours old (past the 1h max age); an incomplete process last recorded activity ... Not orphaned. — Informational. A long-running task is being protected. No action. Expected during long runs.
  • URGENT: Deleting a scheduled task lock file ... because it exceeded the 12h hold ceiling ... — Actionable. A run outran the 12-hour safety ceiling and its lock was cleared, so a concurrent run may start. Investigate why the task runs that long (or raise the ceiling for that install).
  • WARNING: Deleting a scheduled task lock file ... because the liveness check could not run ... — The master database was unreachable/timed out during the check. Check database health if it recurs.
  • WARNING: Deleting orphaned scheduled task lock file ... — Normal recovery. A previous run ended without cleaning up and no activity was seen; the next run proceeds.

Design > Data Sources - report grids can now export to PDFData Source report grids can now produce a PDF. A PDF icon sits in the grid toolbar beside the column selector and the Excel export, and the document it produces holds every row the report currently matches, rather than the page on screen.

Where it is turned on. The export is configured through the pdf block of the cp_DataSourcesExtTable plugin configuration, in the Template Content attribute of a Data Source module record. The Select Command builder writes that block into the markup it generates, so a report built from this version on has the export already. A report built before this version does not gain the icon at upgrade; it opts in by adding pdf: { hasExport: true } to the plugin configuration in its own Template Content. Every available setting, including the orientation, the document title, the downloaded filename and the wording of the band above the table, is documented in Data Sources > Template Content > JavaScript Extension.

The export is for signed-in visitors only and an anonymous request is refused, so the generated configuration hides the icon from anonymous visitors rather than offering one that fails. A report on a public page gains nothing from enabling it.

What the reader has done to the grid carries into the document: the active search term, the sort order, any taxonomy or date-range filter, and the columns left visible in the column selector. Row selection checkboxes and similar controls are stripped out, and a column left with nothing in it once its control is removed is dropped, so a selection column does not print as an empty one.

A short band above the table states what the document covers. It names the report, the generation time in the reader's own time zone and date format, the row count against the unfiltered total, and the filters in force. The count is taken from the finished document rather than from the page, so it cannot claim rows the PDF does not contain.

The PDF is rendered against the site's own stylesheet, so the table arrives looking like the table on screen, with default row spacing and a light rule so an export reads cleanly before anything is customized. A Design styles record can restyle the printed version through the .cp-ds-pdf-export class without those rules reaching the report on screen.

A report with many columns does not produce a good PDF, and no setting changes that. Columns are squeezed to fit the page rather than cut off, so nothing is lost, but past roughly a dozen columns of real content the result is cramped. Where every column of a wide report is needed, the Excel export remains the better tool.

Building a PDF download outside a Data Source grid. The renderer behind the button is a general endpoint: it takes assembled table markup and returns a PDF, and nothing about it is specific to Data Sources. A Form, a custom page, or anything else that can build a table can use it directly. The fields it accepts, the two values it fills in, sample code and the styling hooks are documented in PDF Export Handler.

Download filenames have also been hardened against characters that could break a download, so a name taken from a record's title arrives intact rather than cut short.
Master > Deployment > Web Sites - the Domain Rewrite step now finishes safely on a long restore, and names the column it stopped onWhen restoring a web site with new domain values entered under Master > Deployment > Web Sites, the Domain Rewrite step updates every stored URL from the old domain to the new one across the site's content, audiences, and relational data. On a large site this can take a long time. Previously, if the step ran out of time before finishing, the restore could fail in a way that deleted the newly created web site. Now the rewrite stops itself safely before running out of time, reports exactly which table and column it was working on when it stopped, and the web site is preserved so the rewrite can be finished later. Progress is now shown as the rewrite runs, one line per table and column with the row count and elapsed time.

A new safeguard also applies when the new domain is longer than the old one: any stored value that would no longer fit its column after the rewrite is skipped and listed in the summary instead of causing an error or being cut short. This protection now applies consistently whether the rewrite runs through the Deployment page or through the migrate-site command-line migration tool.
Master > Development > Utilities - Database Maintenance now reports progress and has more time to finishDatabase Maintenance, run nightly and also available from Master > Development > Utilities, previously showed only a starting and an ending database size while it ran, with no indication of what it was doing in between - a long maintenance pass looked identical to a stalled one. It now reports each step as it happens, including transaction log checks and shrink progress. The maximum time allowed for a maintenance pass has also been raised, so an installation with a very large database is less likely to have its maintenance stopped before finishing.
Master > Development > Utilities - nightly Clean Up now updates only the statistics that changedThe nightly Clean Up task, also available from Master > Development > Utilities, previously refreshed every table's statistics in full every night, regardless of whether that table's data had changed. It now updates only the statistics on tables where a meaningful share of rows changed since the last update, and still uses a full sample when it does update one. This shortens the nightly run on installations with many large, mostly unchanged tables, with no loss of accuracy on the statistics that are refreshed.
Site-wide - database files no longer grow by a percentageSome database files were configured to grow by a percentage of their current size rather than a fixed amount. On a large file this could cause an unexpectedly large, slow growth event that pauses activity on that database while the increase completes. Existing database files are now corrected automatically to grow by a fixed amount sized to the file, and a site created from a backup no longer inherits percentage-based growth from the source.
Master > Content > Scheduled Tasks - Data Update now enforces Uploads exclusions and surfaces skipped contentThe Master Data Update scheduled task (Master > Content > Scheduled Tasks) has two behavior changes that fix silent failures during staging-to-production copies. Uploads exclusions now take effect. Previously the exclusion list for the Uploads copy never matched, so every run copied the ModuleViews and SyncInvokeMethods folders even though they were meant to be excluded. These are now correctly skipped. Module Views still transfers either through its own dedicated step (when that option is enabled on the task) or through the Uploads copy (when it is not), so no task loses module-view files. SyncInvokeMethods is no longer copied by Data Update (it held only obsolete files and nothing depends on it). Any custom exclusion an operator enters with a leading /Uploads/ now matches as intended. The task no longer reports success when content was skipped. Any skipped file or record is now reported to the Errors page and marks the run as having errors, so it stands out in the Process Log instead of showing a clean run. For skipped database records (Resources, Module Views), the run also holds its incremental "last run" marker, so the record is retried on the next run rather than being permanently missed. Operational note: if the same record fails on every run (for example one the destination rejects), the marker will not advance until that record is fixed, so incremental updates for the task pause until an operator addresses the record named in the error. To release it: fix the record (or disable that phase), or set the task's Start Date in the scheduled-task editor. A skipped file is reported but does not hold the marker (a permanently uncopyable file will not stall the task).
Centralpoint 8.12.14 maintenance run #1 - error triage fixes, security hardening, and the 8.12.14 Agent and CLIThis is the roll-up for the 2026-09-10 maintenance run. It covers the reported-error triage, a security review across Development and Master, and the redeployment of the Centralpoint Agent and CLI at 8.12.14.

Two changes need a QC step of their own. Both are described under "Important" at the end.

Error reporting
  • A scheduled task that only ran out of request time is no longer disabled. It previously switched itself off and had to be re-enabled by hand.
  • The late-task threshold is now configurable and defaults to four hours.
  • A SAML certificate fault is now reported rather than only suppressed, so a signing-certificate problem surfaces instead of appearing as a silent login failure.
  • A transient database failure during Windows single sign-on falls through as an anonymous visit instead of throwing.
  • A supplied PDF that cannot be read is reported as a content problem, not a platform fault.
  • Database connectivity failures wrapped inside another error are now grouped with the rest.
  • The error logger no longer throws while it writes a log entry.
  • Repeated check-in and OAuth renewal notices are rate limited, the latter per authorization and user rather than for the whole site.


Content and document safety
  • A failure while repopulating a module relation table no longer deletes the user's document.
  • A relation delete that fails now stops the repopulation, instead of reporting a duplicate-key symptom on the insert that follows.
  • Replacing a resource file now retires the previous file aside rather than deleting it, so a file that is locked or in use is no longer lost. Replacing a file with one of a different extension retires the original correctly.
  • Large bulk index deletes are queued through a list parameter, so the request is no longer rejected on size.


Reporting, data transfer and scheduled work
  • A Data Transfer targeting the Site Map module now matches that module correctly. The field map could previously be generated against the wrong table name, and the transfer then failed with an invalid object name.
  • Generated SQL renders a MAX-length parameter as MAX, and quotes string and date types.
  • A delete-only search synchronization reads only its own index.
  • The scheduled task that downloads a file now runs under the process id its caller supplied, so its row appears in the Process Monitor with its status steps.
  • Images loaded for template rendering and size checks are released immediately, so a source file can be renamed straight after a render.
  • Stylesheets and scripts shipped with the platform now carry an automatic version stamp, so a browser picks up an updated file after a deployment.


Search and indexing
  • The vector upsert holds its lock on the content index for less time.
  • A retrieval timeout now reports how many eligible chunks were in play.


Security review
  • Aborting a running process from the console is now signed and verified between the site and the master.
  • Document preview conversion accepts a source file only from inside the site, in every accessibility mode.
  • The document preview cache refreshes when its source changes, and two files with the same name in different folders no longer share one cached copy.
  • The OneDrive download target is taken from the session rather than the address bar, so a download link no longer carries the credential to an address a visitor supplies.
  • The console login return address is validated before the redirect.
  • File and folder paths are checked against the folder boundary rather than the leading text. A sibling folder whose name merely started with the permitted one was previously accepted.
  • Two pages that build a browser redirect from a supplied address now encode it.
  • Uploads through the file browser validate the requested subfolder.


Agent and CLI
The Centralpoint Agent and CLI are redeployed at 8.12.14 and ship as a matched pair. The Agent consolidates the site-skip check used by its patch deployment steps. Both sync methods appear under Master > Development > Sync Methods after the sync.

Important - the console process abort requires the site and master to match
Aborting a running process from the console is now signed between the site and its master, and both sides must be on 8.12.14 or later. A site on this version talking to an older master, or an older site talking to a master on this version, reports "This process cannot be aborted." Abort fails closed rather than proceeding unverified. Confirm both tiers are synchronized before testing the abort.

Important - document preview no longer accepts a remote address
The document preview converter now checks that its source file is on the site itself, in every accessibility mode. It previously allowed an address outside the site whenever the module accessibility was set to anything other than Local Only. A saved or bookmarked preview link that pointed outside the site now returns "not found." Preview links to files on the site are unaffected.
Site-wide - SQL injection hardening across stored filters and query composition (security)Changes Made

Several places in Centralpoint accept a filter typed by an administrator and add it to a larger query: the Source and Delete filters on a Data Transfer (Data Transform > Data Transfer), the custom filter on Admin > Search All Modules, module relation filters, scheduled task custom filters, and filter properties on list and validator controls. Those filters were added to the surrounding query without being checked, so a filter that was incomplete, or that was written to change the shape of the query rather than narrow it, could reach the database as written.

Stored filters are now validated before they run. A filter is refused with a message reading Invalid SQL fragment when it has an unmatched parenthesis, an odd number of single quotes, or contains ;, -- or /*. The most common legitimate case that now fails is an administrator who commented a filter out by putting -- at the front of it rather than clearing the field. On a refusal, the correct fix is to repair or clear the filter, not to work around the message.

Query composition was tightened alongside it. A number of queries combined an administrator's filter with the system's own enabled, date, role and audience filters in a way that let an OR on one side override the other, so a filter could return records the system filters existed to exclude. Each condition now stands on its own. This affects relation reads, taxonomy counts, console grids, the users service and the data transfer readers.

Search redirects now respect their own record settings, which is a visible behavior change. Search redirects were one of the queries affected by the composition problem above. When a site has the search redirect option enabled on the Search system page (Site Architecture > System Pages), a search term is matched against the records under Advertising > Search Suggestions. Those records were being matched without the enabled flag, the start and end dates, or the visitor's audience being applied, so a redirect could fire from a record that was switched off, outside its date range, or aimed at a different audience. All of those now apply, which is how the records are presented in the console and what the settings on each record imply.

A redirect that fires today from a disabled, expired or out-of-audience record will stop firing. That is the corrected behavior, but the records under Advertising > Search Suggestions are worth reviewing on active installs before the release, because a record left disabled while still being relied on will look like a regression.
Master > Development > Utilities - site backups now report archive progress and stop instead of saving an incomplete backup, and a scheduled task that runs out of time stays enabledSite backups report progress while the archive is being built. The archive step previously reported nothing between "Creating Archive File..." and the end of the backup. On a large site that silence could last long enough for the system to treat a healthy, still-running backup as abandoned and mark it as an orphaned process. The backup now reports a running count of files and megabytes as the archive is written, so a long backup is visibly working rather than apparently stalled.

A backup that cannot finish now stops, instead of quietly saving a partial one. When the server runs out of disk space part-way through, the backup previously treated the failure the same way it treats a file that is temporarily in use: it skipped ahead and finished, producing an archive that was missing content. It then applied the retention limit and deleted older, complete backups to make room for it. Only a file genuinely held open by another process is skipped now; anything else stops the backup. If any file was skipped, the retention limit is not applied, so existing good backups are kept.

A scheduled task that runs out of time is no longer disabled. A task that exceeded its allowed run time was automatically switched off, which stopped that work entirely until somebody re-enabled it under Master > Content > Scheduled Tasks - and because a disabled task never runs, nothing reported it again. Running long is a duration problem rather than a broken task, so the task now stays enabled and is rescheduled for its next interval. Tasks that fail for other reasons are still disabled as before, and the alert now names the task rather than only its ID.

Orphaned process reports say which phase each process stopped in. The report under Master > Development > Errors previously described only the single oldest orphaned process, so on a server with a backlog the relevant one was not the one described. It now lists the last recorded step for each process type it found, which is what identifies where the work actually stopped.
Broadcasts > Broadcasts - one-time sends no longer duplicate, and Scheduled broadcasts save againTwo fixes to the Data Broadcasts module (and the other scheduled-task modules that share the same scheduling: Data Transfer, Retention Policies, XML Conversion).

Duplicate sends on one-time broadcasts. A broadcast sent with "Send Now" (or scheduled to send once) could re-send repeatedly after its first send, because the task was not being marked as finished. It now sends once and then stops (Next Run shows "Never"). Recurring broadcasts set to repeat daily/weekly/monthly were never affected — they continue to send once per scheduled time.

Scheduled broadcasts would not save. When a broadcast was set to Send = Scheduled, the read-only "Next Run Date" field raised a "This field must contain a value" error that could not be cleared, blocking the save. The record now saves normally; the Next Run Date is calculated automatically on save.
Master > Development > Utilities - the nightly Clean Up task no longer checks database integrityThe scheduled Clean Up task, run nightly and also available from Master > Development > Utilities, no longer runs a database integrity check (CHECKDB) as part of its maintenance pass. This is a permanent change with no option to re-enable it - if your installation relies on Centralpoint for nightly database corruption detection and does not already run its own integrity check (for example, through a third-party maintenance solution), your database will no longer be checked for corruption automatically. We recommend confirming your own maintenance plan includes an integrity check, or contacting us to discuss options.

Three related reliability improvements ship alongside this:
  • Clean Up's index and statistics maintenance step now reports its progress while it runs. Previously, a long-running maintenance pass on a large database could be misidentified as a stalled or abandoned process and closed out prematurely; it is now correctly recognized as active for as long as it is genuinely working.
  • If a Clean Up is already running, a second attempt to start one - scheduled or manual - is now skipped rather than allowed to run at the same time, preventing duplicate maintenance work from overlapping.
  • Process Monitor's detection of processes interrupted by a server restart or crash is more thorough. Some older interrupted processes were previously excluded from reporting entirely; they are now included in a single summary so a backlog is visible instead of hidden.


Separately, a public API used by custom site code to record long-running processes has been corrected so that processes it creates are attributed to the correct web site in Process Monitor rather than always appearing under the master site. Custom code using this API to track site-specific work will see its records properly scoped going forward.
AI Governance > AI Indexing - Available Modules can now be sorted by record countThe Available Modules tab under AI Governance > AI Indexing now has a Sort control beside the existing filter box. It offers three orders: Records (high to low), Records (low to high), and Name A-Z.

The grid now opens sorted by record count, largest first, instead of alphabetically. Enrolling a large module is the expensive operation, so the modules worth thinking hardest about before enrolling are the ones you see first. Modules with the same record count fall back to alphabetical order, so the list stays in a predictable order as counts change.

The sort applies to whatever the filter box has narrowed the list to, and both controls keep their settings while you enroll modules or move between tabs. The sort returns to Records (high to low) when the page is reloaded.

Two related corrections ship with this change. Changing the sort or the filter before the module list has loaded no longer replaces a load error, or the "vector indexing unavailable on this server" notice, with the message "All eligible modules are enrolled" - a failure to load is no longer able to display as a success. Record counts of zero are also now displayed consistently.
Design > Data Sources - Gamification Performance EnhancementsThe Gamification data source type has been rewritten for performance. Each activity table is now read once per board rather than once per ranked row, and a Module Specific board now reads only the records belonging to its own module instead of every row in each activity table. Leaderboards that previously ran long enough to time out now return in about a second. The largest gains land on the sites with the most activity logged, which are the sites where these boards were slowest, so the gain grows with the size of a site's activity history rather than shrinking with it.

Alongside the performance work, several behaviors changed. Two of them change figures a client may have been reading, and four cover boards that previously failed outright.
  • Revisions count. A record with no activity in the selected period now reports a revision count of 0 rather than -1, and no longer subtracts a point from its own total. This applies to any record whose activity all falls outside an active date filter, not only to records that were never touched, so it affects most rows on a typical board: in testing it moved about four of every five records. Because each affected record also gains a point, the ordering of a board can change wherever point totals were close. Point totals and ranking should be expected to differ from the previous release, and the new figures are the correct ones.

  • Form submissions count. The count of form submissions per record was previously read from a shortened copy of the underlying data, so records referenced late in a large submission could be undercounted. That limit is gone, and the match is now made on the record identifier itself rather than by searching the submission's text, which also removes a dependency on the database's sort order settings. No change is expected on most sites, since the shortening only took effect on unusually large submission records, but sites that hit it will see submission counts and point totals rise to their correct values.

  • Row ceiling. A gamification board now returns at most 1,000 rows, and its Excel and JSON exports are limited to the same. The Limit attribute on the Gamification Configuration record can lower that ceiling but can no longer raise it. Previously an unset Limit allowed up to 10,000 rows, and a blank, non-numeric or zero Limit returned every matching row with no ceiling at all. No Gamification Configuration record currently in use sets a value the new ceiling would reduce, so no existing board is expected to truncate where it previously did not. The ceiling is there to stop a future misconfiguration returning an unbounded board and rendering it into the page. A Limit the ceiling rejects is now written to the page trace, so a board truncated against its own configuration can be diagnosed rather than guessed at. The ceiling applies to the leaderboard and Module Specific boards, which render every row into the page; a personal board is unaffected, as covered below.

  • Personal boards now always show the signed-in user's own row. A gamification data source set to report on the current user only, rather than a full leaderboard, previously had to find that user inside the ranked rows it had already retrieved. A user ranked outside that set saw an empty panel with no explanation. The whole site is now ranked and the user's own row selected from that ranking, so a personal board reports correctly regardless of how the user ranks or how many people the site has. Sites large enough to have hit this will see previously blank personal panels start reporting.

  • A misconfigured board now renders empty instead of raising an error. A gamification data source whose GamificationConfiguration or GamificationModule attribute is missing, malformed, or points at a record that no longer exists now returns an empty board, with the reason recorded in Health Monitor. Previously this produced an entry in Admin > Errors. A board that stops reporting will now appear blank rather than announcing itself, so a blank gamification panel is the first thing to check, and Health Monitor is where the reason is recorded.

  • Metrics whose module was never installed now report zero instead of failing the board. With no Gamification Configuration record every metric is treated as enabled, and the Logs, CE Reports and Forms metrics each read from a module that not every site has. On a site missing one of those modules the entire board previously failed to load. Those metrics now report 0 and the rest of the board renders normally.

  • An empty board still returns its columns. A Module Specific board that cannot resolve its configuration now returns an empty result carrying the full set of columns, and the per-metric multiplier values a template may read are published on every path. A template that binds a column such as Points, or reads a multiplier, no longer fails on an empty board.

  • Module Specific author details. Each row shows the person who most recently touched that record. Where several entries share an identical timestamp, the name, email, last-login and photo are now all taken from the same entry, so a row can no longer pair one person's name with another person's photo. On those tied rows the person shown may differ from before.

  • Date filters passed on the address bar. A startDate or endDate supplied in the page address without a time zone is now interpreted in the viewer's own time zone and converted before filtering. Results for those links shift by the viewer's offset from UTC, and the new figures are the correct ones. A value that states its own time zone or offset is honored as given rather than being reinterpreted. A date falling outside the range the database accepts is now brought inside that range; previously such a value produced an error before the board ran, on a page that does not require sign-in. Date filters set on the Gamification Configuration record itself are unchanged, and continue to be compared exactly as stored.

  • Module Specific boards now also return each record's identifier, auto-number and module, which allows the ColumnFriendlyUrl script to build links to the ranked records. Templates that name their columns are unaffected; a template that lists every returned column will show three more.

Master > Content > Web Sites - Web site restore now clears stale files and protects the shared Integrations contentWeb site backup and restore have been improved. On the Master console under Content > Web Sites, open a web site to reach its Related Backups section: a "Create Backup" button creates a new backup, and a "Restore" checkbox beside each listed backup restores it. A web site can also be backed up from its own console under Development > Utilities > Backup Web Site. When restoring a web site from a backup, the restore now correctly clears out old top-level folders before laying down the backup, so leftover files from removed modules no longer linger afterward. The shared Integrations content is now protected across the entire backup/restore flow: it is excluded from a web site's backup, is never removed during a restore, and is left untouched by the post-restore configuration step. As a result, backing up or restoring one web site can no longer delete or overwrite the shared Integrations content that other web sites rely on. Restoring an older backup can likewise no longer overwrite these preserved folders. Folder matching during backup and restore is now case-insensitive, matching how Windows treats folder names. Finally, if a restore cannot finish while extracting files, it now reports a clear message noting that the backup was preserved and that the extraction error should be resolved before re-running, instead of ending without explanation.
Master > Content > Scheduled Tasks - Database Maintenance no longer reports a healthy database whose transaction log your own backup schedule managesThe Database Maintenance scheduled task reported an error for every database not set to Simple recovery, on every run, no matter how small its transaction log was. On an installation where the database administrator deliberately runs Full recovery with a log-backup schedule, that produced one error notification per database per run for a condition nobody needed to act on, and which Centralpoint deliberately does not change.

The task now decides by recovery model:
  • A database in Full recovery with an active log-backup chain is reported only when its transaction log is above the maintenance threshold of about 1.5 GB. Below that, the log is healthy, its owner manages it, and nothing is reported. An oversized log still reports, because at that point there is space to reclaim and only the database administrator can reclaim it.
  • A database in Bulk-Logged recovery is reported at any log size. That setting is usually left behind by accident rather than chosen, and a routine log-backup job picks the database up either way, so size alone cannot tell the two apart.
  • Maintenance that is deferred because a backup is running follows the same rule, so a database whose maintenance window always overlaps its own backup can no longer defer without ever being seen.


In every one of these cases the transaction log and the recovery model are left untouched, exactly as before. What changed is only whether the condition is reported.

Two further corrections ship with this:
  • These maintenance messages no longer go to the site's Error Notification email. They are still recorded for review, so nothing is lost - they simply stop arriving in the inbox as though they were site errors.
  • Each database in a run is now reported on its own. Previously the first database to report could suppress every other database's message for the following hour, so a genuine finding on a later database went unrecorded.


On an installation with more than one transaction log file, the log-shrink step now measures the file it is actually shrinking, instead of possibly measuring a different one and stopping early.

Centralpoint Update 8.12.13
Monday, August 17, 2026
FeatureSummary
Admin > Global Login — website logout now completes SAML Single Logout so SSO users are fully signed outFor sites using a SAML identity provider (configured under Admin > Global Login) with Single Logout enabled, clicking Logout on the website now signs the user out of the identity provider as well as Centralpoint. Previously the sign-out request to the provider could be dropped during the logout redirect, so the provider session stayed active — a user who clicked Logout and then clicked the SSO sign-in button again was let straight back in with no prompt for credentials. The sign-out request is now preserved and sent to the provider, so returning to the site requires signing in again. Sites that do not use SAML, or that have Single Logout turned off, are unaffected — their logout behaves exactly as before.
Mail & Calendar - a mail account that stops working now tells the user why, instead of disappearing from the listThe Mail, Contacts, Calendars module now explains why a configured account failed instead of reporting a generic connection failure. Where the module previously said only " failed to connect", it now states the actual cause: an Office 365 authorization that has been cleared or revoked asks the user to reauthorize and reminds them to do it from the site's normal web address rather than an IP address or internal server name; an authorization missing a required permission names the permission that needs consent; and an unreachable Exchange, IMAP or Template account asks the user to check its configuration. The prompt still offers to open that account's settings, and now opens the correct one when several accounts are configured.

A broken account no longer disappears from the list. Previously, when a member had more than one account and had not explicitly selected one, any account that failed its check was dropped before the view was rendered. That produced two wrong messages. With every account broken, the module reported "You must add at least one active mail service before viewing your mail" and switched to Settings, telling the member to add an account they already had. With a working calendar-only account beside a broken mail account, it did the same thing, and the broken account was never mentioned. Accounts that fail their check now stay in the list and report their reason on the view they serve, so a mail failure is reported on Mail and stays silent on Calendars.

Pages that list messages through a data source now show the reason inline instead of returning an empty message list with no explanation.

The account list in the module's Settings view now checks each account as it loads, so the "(invalid)" indicator reflects the account's real state on every visit rather than only the first one after a failure. Because of this, the settings list contacts each configured account when it binds and may take a moment longer to appear for a member with several accounts.
My Logs - member health logs, charts and record edits are now scoped to the signed-in member (security)Health log charts previously scoped their records to the owner of the requested chart rather than to the signed-in member, so a chart address carrying another member's chart id returned that member's health log records. The MyLogs module now resolves records from the signed-in member in every case, and that scope is applied by the module itself rather than by each individual view, so no view can leave it out.

Ownership is now verified on every My Logs entry point that reads or changes log data:
  • Charts refuse a chart belonging to another member instead of rendering it.
  • The log form view refuses another member's log rather than displaying its title.
  • Record entry verifies both the log and each record being edited before anything is written, so a partly saved form is no longer possible.
  • Log deletion verifies ownership before removing a log or its records. A deletion request carrying another member's log id previously removed that member's log while leaving their records behind.


A behavior change worth noting: administrators no longer reach another member's health logs through these pages. Access is now strictly the signed-in member's own data. Any workflow that depended on a provider or an administrator opening a member's chart should be raised as a separate request.

Three related fixes ship alongside:
  • The Delete This Log? link now works from the chart views. It previously issued its request and silently did nothing, which read as a broken feature.
  • The chart on the standalone chart page now renders. Its drawing area was being replaced before the chart was drawn, so that page never displayed a chart.
  • The chart date range is now validated before it is applied. An empty or non-date entry previously produced either a blank chart with no explanation or an unhandled error. Invalid entries are now reported next to the button and kept on screen for correction.

Data Broadcasts - images with spaces or special characters in the filename now display in delivered emailsWhen a Data Broadcast is sent with Embed HTML Images set to Yes, an image whose filename contains a space or other special character (for example ericsson email photo.png) was not appearing in the delivered email — recipients saw a broken image. The image reference was being corrupted while the message was assembled for sending. This is fixed: images with spaces or special characters in their filenames now embed and display correctly, the same as plain-named images. As part of the fix, image embedding also confirms each image resolves to a file inside the site's Uploads or module image folders before attaching it.
Site Architecture > Search Page Designer - new tool for building additional advanced search pagesA new tool is available at Site Architecture > Search Page Designer. The advanced search page has always rendered one fixed structure, so any change to how it is laid out had to go through development. Administrators can now create additional search pages and control their markup, styles and scripts directly.

Each page is built from four fields: Page markup, Styles, Inline scripts, and a Custom binder script that applies when JavaScript File is set to Custom. A new record opens pre-filled with the standard search page markup, so every page starts from a working layout and is edited from there. Controls can be reordered, rewrapped, restyled or hidden, but not removed. A check on save refuses markup that has dropped a required control and names exactly which ones are missing.

A page is published by pointing a Site Map record with a page type of Url at the path shown at the top of the editor, which carries a copy option. Existing audience and role security continues to apply, so there is no second set of permissions to manage. Version history keeps the last ten saves and any of them can be restored; restoring is itself recorded, so it can be undone.

These pages continue to leverage the configuration on the System Pages record's Search tab, for example the results header content, results item content, filter visibility options and the rail labels. Those settings resolve per audience and apply to every search page, so they stay managed in one place rather than in each page's Page markup.

The standard advanced search page is unchanged.
Admin > Properties - new Cross-Module Friendly URL Handling optionA new Cross-Module Friendly URL Handling option has been added to the site
properties under Admin > Properties. It controls what happens when a friendly
URL of the form /{audience}/{section}/{document} requests a document that
actually belongs to a different section than the one named in the URL.
Previously, the page would draw that foreign document inside the wrong section's
layout.

The option has three settings:
  • Legacy (default) — no change from current behavior; the document renders

in place under the section named in the URL.
  • Canonical — the visitor is redirected to the document's own section, so it

displays under the correct layout.
  • Strict — the same redirect as Canonical, and additionally returns a Page

Not Found (404) for a document whose module has no public-facing section at all.

The default is Legacy, so no site changes behavior until an administrator
selects Canonical or Strict.
Data Transform > Data Transfer — the Users field-mapping script can now strip text before matching a userIn Data Transfer field mappings, the Users script (which matches an incoming value to a Centralpoint user, usually by IntegrationId) can now clean up that value before it looks for a match. It supports the currentSourceReplaceText and currentSourceReplaceWith attributes, the same find-and-replace step the Roles and Audiences scripts already perform. This lets a mapping remove a stray prefix or suffix from a source value so it lines up with the stored user. Previously the Users script ignored those attributes, so a source value that did not match exactly returned nothing, the record's user could not be set, and the record was dropped, which could cancel a transfer once enough records failed. Mappings that do not use these attributes behave exactly as before.
Centralpoint 8.12.13 maintenance run #2 - source-editor fields keep their edits on a partial page refresh, plus sign-in, search, broadcast and scheduled-task fixesSource editor keeps the latest edits. A source-editor field (JSON, SQL, HTML, CSS or JavaScript) could lose the most recent edits when part of the page refreshed before the record was saved - the previously stored value was submitted instead, with no error. The field now captures every change as it is typed, so a page that refreshes a section still saves what is on screen. A field holding plain text rather than encoded content is also accepted as-is instead of being stored as corrupted text. Affects the source editors on Tools > Actionable Select Command Builder and on the task properties under Master > Content > Scheduled Tasks.

Sign-in and account lockout.
  • Admin > Global Login: a certificate problem during single log-out now names the Global Login source that failed and the certificate settings to check, instead of reporting a generic failure.
  • A locked-out account is no longer handed back to the requesting page in a signed-in state. The sign-out rebuilds the request identity, and self-request sign-outs redirect only from a page request.


Search. Contextual search no longer fails when a term resolves to no matching records. A search field configured without a column name now contributes no filter term instead of failing the whole search.

Broadcasts. On the unsubscribed-recipients grid under Broadcasts > Broadcasts, recipient names are now encoded, so a name containing markup characters displays correctly. A keyword search on that grid now keeps the grid's base filter instead of replacing it, so results stay scoped to the broadcast.

Policies and Procedures. Values passed into the approval pop-up are now encoded, so an approval link containing reserved characters no longer breaks.

Media Manager. The fourth upload control on Design > Media Manager now validates the file name before uploading, matching the other three.

Scheduled tasks and data transfers. A blocked or orphaned scheduled-task warning now names the task holding the lock, rather than only reporting that something held it. During a data transfer, an unresolved user is reported once per user instead of repeatedly, and the row that trips the relation-error limit is now identified in the status.

Module downloads. A file-output download link derives its address from the current request, so it resolves correctly behind alternate host names.

AI chat. A rejection from an AI provider is now reported as the provider's, with the matching remediation, instead of as a Centralpoint incident. The assembled system message is bounded to the model's prompt budget.

Audience selector. The console audience selector loads correctly when a user has to choose the current audience.

Master > Deployment > Web Sites. Administrative operations release impersonation reliably, including when the operation fails.

For custom code. A non-throwing check for whether a local user exists is now available, so custom code can test for a user without handling an exception.

Dependencies. Updated marked to 18.0.11, Microsoft.Extensions.Hosting.WindowsServices to 10.0.11 and AspNetCore.OpenApi to 10.0.11, and retired a direct Microsoft.OpenApi version pin.
AI Governance > AI Indexing - the attribute limit is now 100, failures explain themselves, and an attribute picker prevents typosThe Edit Configuration dialog under AI Governance > AI Indexing has been reworked. Three problems are fixed and four additions make the dialog explain itself before you commit a change.
  • The Source Attributes limit is raised from 25 to 100. Wide indexes that previously could not be saved at all now save. The stored field was also widened to hold a list that long, so a long list no longer fails on save.
  • A failure now says what went wrong. Both the preview and the save previously reported only a status number, which is why a rejected list and a permissions problem looked identical. The dialog now reports the actual reason, including the reason returned by the server.
  • Both calls now have a time limit. A save on a large module used to appear to fail instantly; it now runs to completion and reports what it did.
  • A rebuild that is interrupted can be resumed. Re-running the save finishes the remaining work instead of starting over.
  • Values are checked before anything is sent. An empty or out-of-range Chunk Size, Overlap, or Max Chunks/Record, and a list over the limit, are reported inline in the dialog.
  • New attribute picker. Browse this module's attributes lists every attribute defined on the module, prose fields first, and marks the ones that hold no text. Names that are not defined on the module are called out by name, including a name that is correct except for its capitalization - matching is exact, so aidescription does not match AIDescription and would have indexed nothing.
  • The dialog estimates how much of each record is actually indexed, and the preview shows it measured per attribute: how often each one is filled, its size, the running total, and where the budget runs out. Attributes past that point are named as not reached, so a list that is longer than the budget allows is visible before saving rather than after.
  • The preview states the exact impact - how many chunks and stored values the save will delete, how many records will be rebuilt, and roughly how long that takes. Records that exceed Max Chunks/Record are now reported instead of being silently shortened.
Master > Deployment > Updates - a long-running sync method no longer fails the install or skips the Development phaseUpdate installs run from Master > Deployment > Updates no longer fail when a sync method legitimately runs long. Previously the install stopped waiting after five minutes regardless of how much time the request actually had, and then reported that the web service was inaccessible - even when the service had answered and every method had completed successfully. Three things changed:
  • The wait now derives from the request's own time budget rather than a fixed five minutes, so a sync method that needs longer is allowed to finish. Each phase is given a share of the remaining time, so the phase that follows still has time to run.
  • The message now names what actually happened. A timeout, an unreachable address, and a server-side error read differently instead of sharing one wording. The message names the scope that failed rather than always saying "Master and Development", and the advice to check the web service address now appears only when the address really was unreachable. The remediation text no longer tells the operator to select "Pending" on Master > Development > Sync Methods - there is no such filter on that page, and a method that has never run shows as New.
  • A slow Master phase no longer silently skips Development. When the Master scope times out, the install now still runs the Development scope, because a Master timeout says nothing about Development and minutes of install work run in between. It still skips Development when the address is unreachable or the server returned an error, and it now records a step on Master > Development > Process Log naming the scope it skipped. Previously a skipped phase left no record at all.


An install that times out and then completes is also no longer reported as a failed run.

This fix cannot govern the install that delivers it. The affected code is loaded before an update's files are copied, so 8.12.13 is the first version to carry it and 8.12.14 is the first install it actually controls. Masters left with a skipped Development phase by an earlier version are corrected by re-running their sync methods from Master > Development > Sync Methods.
Master > Deployment > Updates - updates, deployments and config edits now survive an interrupted writeSeveral file-writing operations across Master and the client sites have been hardened so that an interrupted write - a process ending mid-save, a server restart, a full disk - can no longer leave a half-written file behind. Each of these files is now written to a temporary file first and swapped into place in a single step, so a reader either sees the previous version or the new one, never a partial one.
  • Update file manifest. Master > Deployment > Updates records which files an update replaced. If that record was interrupted while being written, the next update could read it as empty and treat every file as needing replacement. The record is now written whole or not at all.
  • Deployment backups. A deployment interrupted while writing its backup marker could afterwards be read as a completed backup. The next deployment then skipped taking a backup and began replacing files with nothing to roll back to. The marker can no longer be left in that state.
  • Deployment packages. Replacing a deployment package on the server briefly removed the old file before the new one was in place. A site requesting it in that instant received a "not found". The swap is now a single step.
  • Long installation paths. On installations whose folder path exceeds the Windows 260-character limit, saving settings, toggling application trace, and restarting an application all silently did nothing - the operation reported success without acting. These now work on long paths.


There is no change to any screen or option, and no change to the contents of any configuration file. The behaviour differs only when a write is interrupted, or on an installation with a long folder path.
Admin > Properties - site map navigation is now filtered per user under Multi-tenant Audiences (security)On sites where Web Site Audience Filtration & Security is set to Multi-tenant Audiences, the site map navigation was built once for an audience and then reused for everyone in it. The first signed-in non-administrator to load it fixed the tenant scoping for the rest of that audience until the site next restarted, so users holding different Tenants selections could be shown navigation items belonging to another tenant.

The navigation tree is now loaded for the audience as a whole, and each user's Tenants selections are applied as the site map renders. Every user sees only the items their own selections allow, and the shared tree stays reusable, so there is no added query cost per visitor.

What was exposed, and what was not. The items visible were navigation titles, links, tooltips and navigation groupings. The pages behind them were still permission-checked on every request, so no one could open a page they were not entitled to. Anonymous visitors and administrators inheriting from a parent site continue to use the default Tenants selections.

The Site Map module can no longer be entered in Web Site Audience Filtration & Security Modules, because it manages its own cache rather than the shared module cache. Both the help text on that section and the message shown when the module is entered have been corrected - the previous wording stated that the Site Map module itself was not supported, which is no longer the case. Tenant scoping does apply to navigation items; it is simply applied as the site map renders instead of by disabling the cache.

Sites left on Audiences (Default) are unaffected and follow the identical code path as before.
Site-wide - seven page caches that never took effect now work, and member log edits appear immediatelySeven caches across the Development site read one storage key and wrote another, so none of them ever took effect. Each looked like it was caching, but the query underneath ran again on every page view. The affected areas are audience home pages, the ModuleContentTree and ModuleDragTree CpScripts, the TaxonomyProximitySearch CpControl, the page list on a multi-page PubArticles article, and member log records in MyLogs.

Those caches now work, which required correcting what sat underneath them:
  • The two taxonomy tree CpScripts and the TaxonomyProximitySearch CpControl now store their results per taxonomy root and per module. Widgets configured with different roots previously shared a single storage key, which would have served one widget's taxonomy to another as soon as the cache began holding anything.
  • The audience menu now builds its own filtered list on each request. It previously filtered a shared list in place, so two visitors in different audiences loading a page at the same moment could affect each other's menu.
  • Deleting a member log, and saving a member log record, now update the log display immediately. Both write directly rather than through the console, so neither released the stored copy.
  • The taxonomy trees now refresh when a taxonomy item is renamed or moved.
  • The member log chart no longer stores its results. Its date range moves with the current date, so a stored copy was never reused; it now reads live on every request, and changing the date range always re-reads.


Pages using these features will run fewer repeated queries. Content that was always read fresh is now held for between 6 and 24 hours depending on the feature, and each one is released when the content it depends on changes.
Site-wide - API request limits are now tracked per caller, so agent traffic no longer locks operators out (Server Hub) Fixed an issue where automated site check-in traffic could consume a shared request budget and cause the API to reject requests from signed-in operators with a 429 Too Many Requests error. The impact was most visible in the Server Hub: when many sites were checking in at once, operators could be blocked from issuing or retrying commands and from other write actions, even though the automated agents themselves kept working normally. The effect grew with the number of sites in the fleet. Request budgets are now tracked separately per caller, so automated agent traffic no longer counts against a signed-in operator's limit. Each operator, each site, and anonymous callers get their own independent budget. Separately, when a request limit is reached, the "try again in N seconds" message now reflects the correct time window. Previously a caller who hit an hourly limit was told to retry within seconds, causing repeated failed retries; the message now reports the actual wait for the window that was exceeded.
Site-wide - site navigation now loads once for every audience instead of once each, so a restart no longer stalls sites with many audiencesAfter an application restart - a scheduled recycle, an update, or a manual restart - a site rebuilt its navigation separately for every audience it has. Each rebuild ran its own database lookup and opened its own connection. On a site with a few hundred audiences that was enough to exhaust the available connections, and visitors saw errors on pages that had nothing to do with navigation for the first minute or two after the site came back.

Four changes address this, and all of them apply automatically with no configuration change:
  • The navigation set is read once and shared. Every audience now builds its menu from a single lookup instead of running its own. The menus produced are unchanged; only the number of lookups changes.
  • An audience with no published home page is recorded once. Previously that condition was re-checked in full on every visit, for the life of the application. It is now recorded the first time and skipped after that, until a home page is published or the navigation cache is cleared.
  • Simultaneous first visits to the same audience share one lookup. Several visitors arriving at once no longer each open their own connection for the same audience.
  • One audience's failure no longer affects the others. If a menu cannot finish building, only that audience is affected. Previously the site discarded every audience's menu, so every visitor had to wait for a rebuild - and the rebuilt links could come back in a non-standard form until the next restart.


The benefit scales with audience count. A site with one audience behaves exactly as before.
Site-wide - AI crawlers no longer count as visitors in recorded searches, leads, and clicksCentralpoint decides whether a visitor is a crawler before it records a site search, a lead, or a link click. That decision previously came from a browser list built into the underlying web platform, which has not been updated since the current generation of AI crawlers appeared. It recognized older crawlers such as Googlebot and bingbot, but not ClaudeBot, GPTBot, PerplexityBot, Bytespider, ChatGPT-User, or Meta's crawler. On a site those agents visit, they were counted as visitors: their search terms were stored, and their page views and link clicks were recorded as leads and clicks. On one measured site, those newer agents accounted for over 98 percent of all crawler traffic.

All three of these places now use Centralpoint's own crawler list, which already governs Natural Language Search reporting and is maintained with each release. The affected areas are:
  • Recorded search terms - stored only when Admin > Properties > Search Criteria Recording is enabled. These feed popular-search and search-activity displays.
  • Leads - recorded only on navigation items with lead tracking turned on.
  • Clicks - recorded through the click redirector, which has no separate setting and is therefore the broadest of the three.


Expect these numbers to go down. On a site that receives AI-crawler traffic, popular searches, lead counts, and click counts will fall once this release is applied, and the drop may be large. This is the correction working as intended - those entries were never real visitors - but a client tracking these figures month over month will see the change. Historical entries already recorded are left alone; only new traffic is affected. There is no per-site setting to return to the previous behavior, because the previous behavior did not recognize the crawlers causing the problem.

The crawler list also now recognizes Google's specialized crawlers - Googlebot-Image, Googlebot-News, Googlebot-Video, and Googlebot-Mobile - which the old platform list matched but Centralpoint's own list did not.
Site-wide - search terms are now encoded everywhere they are displayed, and blank stored entries are removed (security)Search terms typed by visitors are recorded and then displayed back in several places. Every display location now encodes the term, so a term containing markup is shown as plain text instead of being treated as part of the page. This covers the SearchTermsCloud and ModuleTagCloud CpScripts, the tag cloud Data Source output format, the PopularSearches control, the Top Searches line on a module's console grid, and AI Governance > Search Suggestions.

Links built from a search term are also web-address encoded now, so a term containing & or other special characters produces one working link instead of a broken one.

Stored terms themselves are left exactly as the visitor typed them, so search reporting stays accurate. A one-time cleanup that runs with this sync removes stored entries that hold no search text at all - entries that are blank or contain only markup. Any entry with real text is left untouched, and everything removed is written to a backup file first.

For terms that contained no markup the display is unchanged. Only a term that contained markup or special characters looks different, and it now reads as the text the visitor actually typed.
Master > Development > Sync Methods - the Master API address is no longer overwritten from a stale setting, and an unreachable one can now be repairedTwo changes to how the Master's own API address is maintained under Master > Admin > Settings.

The 8.12.8 sync method that ensures Api.Base.Url derived its value from UpdateInstall.SyncInvokeMethods. The installer writes that second setting once, so on an install whose domain has since been renamed it names a host that no longer answers. The method treated it as authoritative and replaced a working Api.Base.Url with the retired host. The Centralpoint Agent reads Api.Base.Url to reach the Master, so from that point it could no longer run sync methods there, while scheduled tasks kept working. This was observed on an install running 8.12.12.

That method now leaves a populated Api.Base.Url alone on a Master, and only fills it in when it is missing, which was its original purpose. Web site behavior is unchanged.

A new Master sync method in this version repairs an install already affected. It first checks whether the configured address answers. If it does, nothing changes. If it does not, it takes the address that carried the request, confirms that address answers, and only then writes it to Api.Base.Url and corrects UpdateInstall.SyncInvokeMethods to match. It cannot write an address it has not proven, so it can never install a second unreachable host. Where appSettings is protected, it reports that and makes no change, so set Protected to no under Master > Admin > Settings first.

web.config change: on a Master whose configured address does not answer, this version writes two appSettings values in the Master's own Root web.config, Api.Base.Url and UpdateInstall.SyncInvokeMethods, and backs the file up to Backups\Web.Config first. No web site or Console web.config is touched, and no binding redirects, handlers or modules change, so a virtual directory running as its own IIS application needs no matching edit. On a Master whose address already answers, nothing is written.
Centralpoint 8.12.13 maintenance run #1 - Master tools now report a failed operation as failed, console navigation recovers from an interrupted build, and sign-in, search and link hardeningThis is the roll-up note for the 2026-08-20 maintenance cycle. Nothing below changes how a feature is used; each item removes a case where the product reported the wrong outcome, stopped early, or exposed something it should not.

Master > Development > Utilities - a failed operation is now reported as failed. SQL Non-Query and Database Maintenance recorded a failure against the site that failed but still finished with a "Completed" status, so a statement or a maintenance pass that failed on every selected site reported success. Both now report the failure and point to the Process Log for the detail. This extends the same correction already made for Master > Deployment > Web Sites in this cycle.

Master > Development > Utilities and Master > Deployment > Web Sites - a failure is recorded against the right run. When one of these tools failed, the failure could be written against an empty process entry rather than the run that was actually going, leaving the real entry open with no end time. Nine tools were affected, including the nightly Clean Up. The Process Log now shows the failure on the run it belongs to.

Master > Content > Scheduled Tasks - clearer warnings. A late-task warning now states how late the task is, and a sync method that was interrupted mid-run is now named in the warning instead of being reported anonymously.

Master > Development > Process Log - historical entries are no longer re-reported. Long-idle orphaned entries that predate the current cycle are marked and set aside rather than reported again on every sweep.

Console navigation - an interrupted build no longer leaves navigation incomplete. If building the navigation tree was interrupted, the partial tree could be served until the application restarted. The build is now discarded on interruption and rebuilt on the next request. Console pages also no longer error when a navigation item's module is missing; the page loads with that item's settings empty.

Admin > Global Login - a certificate problem is now reported as configuration. A certificate that is missing, expired, or whose password does not match is now reported as a configuration issue naming the Global Login record to correct, rather than as a generic error.

AI Governance > NLS Configuration - provider errors no longer include the API key. Errors raised while connecting to Algolia or Amazon Kendra included the configured API key in the message text, which then appeared wherever the error was recorded. The key is no longer included.

Reporting - report errors now name the cause. A report whose Select Command returns a column the grid cannot display now names that column instead of failing with a framework error, and a command that returns no rows at all now says so directly.

Result grids - the All Attributes search field is matched regardless of casing. Where the All Attributes field was selected with different capitalisation than expected, attribute-mapped columns came back empty and the underlying attribute data was included in the response. Both are corrected.

Console links and post-sign-in returns - hardening. External link and embedded-page destinations are now taken from the configured navigation item rather than from the address bar, and every post-sign-in return address is validated against one shared rule instead of three separate copies of it. A return address whose own query string contains a full web address continues to work.

Data updates - one unreadable file no longer stops the rest. A single file that could not be copied ended the whole data update; the remaining files are now processed and the skipped files are reported together at the end.
Tools > Resource Access Diagnostic - new tool to diagnose why a resource will or will not openChanges Made:
A new Resource Access Diagnostic tool has been added under Tools > Resource Access Diagnostic. It helps determine why a document or file will or will not open for a user. Enter a ResourceId, a resource System Name, or a full /Resource.ashx link, and the tool reports in one screen: whether the resource record exists, whether its file is present on the server, whether the resource is enabled, and whether the current user (or another user you name) meets the role requirements. It ends with a plain Yes/No result. It runs the same checks the file viewer performs, so it answers "why won't this preview or download?" without needing direct server access. An optional Check as user field lets you test another user's access; if a username is shared by more than one account it asks for the UserId instead.
Site-wide - result pages that preview a lookup value now load it once per page instead of once per rowA Results View that displays a value from another module using the Column script with Preview enabled previously ran a separate lookup for every row on the page. On a large lookup list this could mean a couple of hundred database round trips to draw a single page of results, which showed up as a slow page and, on the largest lists, a timeout.

Those lookups are now resolved once for the whole page before the results are drawn. The values displayed are unchanged; only the number of lookups changes.

This applies automatically with no configuration change, and no Module Designer setting needs to be turned on. It covers preview columns that point at another module, an audience, a taxonomy, a navigation item, or a tiered selector. A preview column whose lookup list is narrowed by a filter is intentionally left on the previous behaviour, so those columns will not show the same improvement.
Content > Events - recurring events set to December only now generate their occurrencesA recurring event configured to repeat monthly in December only produced no occurrences at all, and reported that no month had been selected even though December was selected. Any other single month, and any combination including a second month, worked normally. December-only recurrences now generate their occurrences as configured.
Master > Content > Scheduled Tasks - overdue and misconfigured monthly tasks no longer take the console offlineA scheduled task whose next run date had fallen a long way behind could take the Master console and all scheduled processing offline, recovering only until the next run and then failing again. Long-overdue tasks are now brought up to date without that failure, however far behind they are.

Two related corrections ship with it. A monthly task saved with no month selected previously ran at the wrong time; it now stops and reports the misconfiguration so it can be corrected. A task that cannot be scheduled at all now leaves its Next Run Date blank, shown as Never, instead of displaying a date in the year 9999 that made it look scheduled.

Alongside these, a failure to record a task's next run date is now reported rather than passing silently, so a task can no longer stop running with nothing in the error log to find it by.
Site-wide - Document Viewer cache file hardening: previews are now keyed by file extension, so two files sharing a name no longer share a previewEach converted document preview is now cached under the source file's full name, including its extension. Previously the extension was left off the cached preview's name, so two files sharing a base name in the same folder, such as Report.docx and Report.pdf in one Uploads folder, resolved to the same cached preview. Whichever document was viewed most recently was the one both of them then displayed, with no error shown and no reconversion. This affected the Word viewer, the Excel viewer, and the PDF preview behind the PdfViewer and FileViewer CpScripts. The PDF preview had the widest exposure, since it converts 22 different file types down to a single .pdf preview. Previews of files held as Resources were never affected, because each resource is already cached under its own unique id, and they keep their existing names.

Existing cached previews are kept, not discarded. The first time a document is viewed after the update, its existing cached preview is renamed to the new name in place, so it is not reconverted. Documents that are not viewed keep their old cached files until they are. Where two files genuinely shared a name, neither adopts the old preview: the previous name could not tell them apart, so each converts its own on its first view.

No preview cache folder should be cleared as part of this update. The rename above handles the transition on its own, one document at a time and only when that document is viewed. Emptying a Temp\AsposeWordViewer, Temp\AsposeExcelViewer or Temp\AsposeToPdf folder would instead force every document on the site to reconvert on its next view.

The cached file name has changed, which matters for the single-file clearing steps documented in the v8.12.12 Word Viewer note. A document at /Uploads/Policies/charter.docx is now cached at ...\Temp\AsposeWordViewer\Uploads\Policies\charter.docx.html, where it was previously charter.html. The same applies to the Excel viewer's .json files and the PDF preview's .pdf files. Clearing one problem document's cached file is still supported and is still the correct approach; only the file name to look for has changed.

A PDF carrying a static watermark now renders. Previously a PDF configured with a fixed watermark through the PdfViewer CpScript failed on every request and returned an error document, because the watermark step looked for a converted copy that was never produced for a source already in PDF form. Only PDFs were affected, and only with a fixed watermark. Every other format, and watermarks that insert the signed-in reader's own details, were unaffected. Such a document now renders with its watermark applied and caches normally.

Alongside this, the Excel viewer now writes its cached preview to a temporary file and swaps it into place only once it is complete, which is how the Word viewer has written its own since v8.12.11. An interruption partway through a conversion, such as the site restarting or the disk filling, previously left the Excel viewer with a truncated preview file stamped as newer than its source workbook, which was then served indefinitely until the workbook itself was re-saved. A write that cannot complete now leaves the previous cached preview untouched, reports the error in the viewer, records it in the error log so it can be traced, and converts again on the next view.
Master > Development > Sync Methods - a server whose reporting stops during an update now restores it on its ownWhen an update replaced the Centralpoint Agent, the agent could restart correctly and continue running scheduled tasks while quietly stopping its check-ins to the central service. The server then looked completely healthy from the console - correct version, service running, scheduled work firing - while central reporting and remote commands were unavailable for it until someone restarted the service by hand on the server.

The agent now retries on its own and resumes reporting once the condition clears, so no manual restart is required. It also records why reporting stopped in its own log, rather than stopping silently, and no longer repeats the same message on every retry.
Master > Deployment > Updates - an update install no longer fails because the progress display was being read at the same momentInstalling an update from Master > Deployment > Updates could stop partway with a message about the file UpdateSteps.htm being in use by another process, even though nothing was wrong with the update itself. That file is the progress log the page reads to keep showing steps after the application restarts mid-install, and the page reading it could block the installer from writing to it. The installer and the progress display no longer contend for the file, and a progress write that cannot complete now leaves a note in the step list instead of ending the install. Retrying the install was the correct workaround and is no longer needed.

Two related improvements ship with it. The progress display is now confined to reading only the update progress file, and a page that requests anything else is refused. A failed progress write also no longer causes a successful install to be reported as failed.
Site-wide - a Data Source can no longer be set to run with no query time limit, and CpScript asset includes cache-bust automaticallyA Data Source can no longer be configured to run its query with no time limit at all. The DataSource CpScript's CommandTimeout attribute is documented in the Script Designer for the first time, and a value of 0 - which previously meant no limit - now resolves to the system maximum. Any value above the system maximum continues to be capped, as before.

Existing Data Sources are not being given shorter time limits. A Data Source that leaves Command Timeout blank is unaffected: each Data Source type keeps exactly the default it had before, so existing feeds run as they do today. A Data Source explicitly set to 0 now stops at the system maximum, which is higher than the page request limit those queries already run under, so a query that completed before still completes.

One case worth reviewing. On Connection String, ODBC, OLE DB, Oracle and module-cached Data Sources, a CommandTimeout value was previously accepted and then silently ignored. It now applies. If one of those Data Sources carries an explicit value that is lower than the limit it was effectively running at, that value now takes effect - so check any Data Source of those types that has Command Timeout filled in. Ones left blank are unchanged.

The RegisterCssFile and RegisterUnmanagedScriptInclude CpScripts now add a cache-busting version to a site-relative stylesheet or script automatically, taken from the file's last modified date and applied when the page renders. A version query string added by hand is now replaced, so hand-added versions should be removed from existing content: they pin the file to an old version and stop later updates from reaching browsers. Fully qualified and protocol-relative URLs are left exactly as written.

The Word and Excel viewers now read a single shared list of supported formats, so the FileViewer CpScript's "View File in Browser" link and the viewer page it opens can no longer disagree about which file types are supported.
Master > Development > Sync Methods - the Agent update now refuses before replacing any files when it cannot manage the serviceThe sync method that updates the Centralpoint Agent used to begin replacing the Agent files and only then discover that it could not stop or start the Windows service, leaving the Agent part-updated and stopped. It now checks that it can manage the service first and refuses with a clear explanation if it cannot, so nothing is replaced. It also distinguishes a service that is simply slow to stop from one that has been refused: a slow stop is now waited for and re-checked rather than being treated as a failure, and a service already running at the target version is reported as such instead of being restarted needlessly.
Master > Deployment > Web Sites - site tools now report when an operation could not finish, instead of reporting successSeveral site operations in Master > Deployment > Web Sites could fail silently on servers where the Master does not have permission to manage IIS or Windows services. In each case the console reported success and the operator had no way to know something had been left undone. These now report honestly:
  • Deleting a web site - if the IIS bindings cannot be read, the process status now says so and the failure is recorded, so it is clear that a hosts-file entry may have been left in place. Previously this was discarded entirely.
  • Restarting the API application - now reports three outcomes instead of two: restarted, requested but not confirmed, or failed. Previously anything that was not an outright failure was shown as a successful restart, including a restart that was only requested. This wording is shared with Master > Admin > Properties, so both pages say the same thing.
  • Saving load balancing settings - if the Centralpoint Agent service cannot be restarted to pick up the new configuration, the operator is now told. Previously this went only to trace output, which is switched off on client servers, so the save reported success while the Agent carried on with its previous configuration.


Where a failure is caused by insufficient permissions, the message now explains the cause and, where one exists, points to the Server Hub action that can carry out the same operation.
Data Transform - Design (Styles) module fields beyond Global/Icons are now individually mappableWhen a Data Transfer uses a module that has a "Site Type Properties" field (an Attribute Collection) as its source or destination — most notably the Design (Styles) module — the Fields tab now lists every sub-field as its own mappable column, each with its proper control (color picker, background-repeat list, font list, etc.). This covers all the tabs beyond Global and Icons: Top, Right, Bottom, Left, Center, Navigation, Sub Nav, Mobile Nav, and Misc. Previously only the Global and Icons fields were mappable and every other field was locked inside a single Site Type Properties value, so the only way to load them was to hand-build one large XML value. Expansion is automatic — there is no setting to enable. Existing transfers are unaffected: the new columns default to each field's existing value, so re-running a transfer does not require a new source mapping and does not change any field you did not map. On import, mapped values are merged into the module's Site Type Properties, leaving the fields you did not map untouched.
Site-wide - Statistical Semantic Search removal: measured re-index times, and the how-to pages it leaves behindThis is a follow-up to Site-wide - Statistical Semantic Search is removed, and its example Data Sources are archived, filed earlier in this cycle. That note still describes what the release does and how to opt out; nothing in it has changed. This one adds the timings, now that the removal has been run across a full server.

The re-index is far quicker than the earlier note suggested. That note said the rebuild "can run for hours on a large site", which was a conservative estimate made before the removal had been run at scale. Measured across 39 sites on one server:
  • The whole server finished in 50 minutes, start to last index complete.
  • The largest site, at 2.7 GB of indexed content, rebuilt in 6 minutes 27 seconds.
  • Ordinary site search and Contextual Search returned identical result counts before and after on every site checked.


No site needs to be scheduled separately. The sync works through sites one at a time rather than starting every re-index at once, so the load stays spread out on its own. A normal sync window is sufficient, and there is no need to stagger sites or hold the large ones back. An off-hours window is still the right choice, for the reason the earlier note gives.

Five how-to pages under Content > Generic describe the removed feature and should be retired. They contain no semantic queries, so the release leaves them untouched and they will keep rendering - but after this release they document something that no longer exists:
  • Semantic - Document Keyphrases
  • Semantic - Similar Documents
  • Semantic - All Keyphrases Score in Content but not in Keywords
  • How to create a Semantic Keywords Tag Cloud (Generic Enhanced A) including an EXCLUDE dictionary
  • How to render a Semantic Keywords Tag Cloud - Against an Individual Record (Generic Enhanced A Only)

Site-wide - the console now recovers on its own after a brief interruption to the central serviceA short interruption in a site's connection to the central Oxcyon service could previously leave part of the console unusable until the site's application was restarted, which in practice could mean many hours. The first failed lookup was remembered and repeated on every later page view, so the site never retried even after the connection was fine again. Affected lookups now retry on the next page view and the console recovers on its own.

This covers two areas a user would notice:
  • Console navigation. The menu and breadcrumb depend on a licensing lookup against the central service. A single brief failure could break those on every console page until the application restarted.
  • Administrator role checks. A brief database interruption could leave administrator permissions unresolvable for the whole application in the same way.


On Development > Errors, sign-in failures against the central service are now grouped separately from connection failures. The two are unrelated faults that previously shared one group, which meant a burst of one could use up the hourly reporting limit and hide the other. Existing error records keep their current grouping; the split applies to newly reported errors.
Master > Deployment > Web Sites - raised request time limits so large site creations and long-running tools no longer time outSeveral pages and services were running under time limits far shorter than the work they perform, and would stop partway with a generic error rather than finishing.
  • Creating a web site from a backup under Master > Deployment > Web Sites had a one-hour limit. On a large site the domain-rewrite stage alone can exceed that, so the creation failed after the database and files were already in place. The limit is now five hours, and the rewrite stage itself was made substantially faster - it no longer scans every text column twice on sites whose new domain is longer than the old one.
  • Retrying a sync method from the Server Hub had a ten-minute limit, while the same method run during a version install had two hours. A long database operation could therefore fail on retry and succeed on install, with nothing to explain the difference. Retries now get the same five-hour allowance as the other maintenance services.
  • Streaming a video or large file from the console, opening the template gallery, and converting a document to PDF each had no explicit limit and fell back to a short default. All three now carry their own.


Installations gained two safeguards. The installer now refuses to run when a Centralpoint database already exists on the SQL server, because continuing would replace it and discard every site, user and setting in it - recovering an installation by re-running the installer is no longer possible by accident. It also reports whether the Centralpoint Agent service ended up installed and running, so a server that would be invisible to the Server Hub is visible at the end of the run instead of days later.

web.config change - please read. This release edits web.config on the main site and Console to raise these limits. Two situations need attention on your installation:
  • A virtual directory that runs as its own IIS application has a separate web.config that the deployment does not touch, so it keeps the old, shorter limits. If that sub-application serves long-running requests - large downloads, document conversion, reporting - the same time limits must be applied to its own web.config by hand.
  • Custom code with its own configuration is unaffected by the values themselves, but confirm the site still loads after the update if your configuration overrides the same settings; where it does, your value takes precedence and may still be too short.

Site-wide - audiences missing a home page are now reported, and a site root that cannot resolve returns 404 instead of loopingAn audience with no published home page previously showed visitors an error page while recording nothing an administrator could act on. That condition is now reported and appears on Development > Errors, so it can be found without reading a server log. It is reported once per audience for the life of the application, not on every visit - a missing home page is a configuration fault rather than an event, so one entry per audience is the intended volume.

A new check also runs as part of the standard Clean Up task (Master > Content > Scheduled Tasks) and reports audiences that have pages but no home page, before a visitor finds one. Per-site detail is written to Master > Development > Process Log. Audiences with no pages at all are counted rather than reported, so the report stays limited to audiences that are genuinely broken - on a typical site that is the difference between one finding and hundreds. A single report covers the whole run and names every affected site.

Separately, a site root that cannot resolve to a home page - most often a domain added without a matching Preferred URLs record - previously returned a redirect to itself, which a browser reports as a redirect loop with no explanation. It now returns a standard 404 and records the host along with the address it resolved to, so the cause is visible instead of being mistaken for an outage.

The Events module add-to-calendar link (the addToMyCalendarText option) now returns a standard 404 when the event has been removed or has expired, rather than an error page.

To resolve a reported audience, open Site Architecture > Audiences, select the audience, and publish a home page for it. To resolve an unresolvable site root, add the Preferred URLs record for that domain, or a URL Redirect record pointing it at a valid page.
Master > Development > Sync Methods - a sync method that could not update a second load-balanced web server now reports Partial instead of SuccessA site can be configured for load balancing, which adds a second web server sharing the same database. The sync methods that write site configuration write it to both servers.

Previously, if the write to the second server did not succeed - its path unreachable, or its permissions denied - the sync method still recorded Success. The first server was updated, the second was not, and the record gave no indication of it. Those methods now record Partial on Master > Development > Sync Methods, keeping the individual first- and second-server results on the record. A Partial record can be retried or marked Ignored from the record itself, the same as a failed one.

A run that updated both servers reports Success exactly as before - nothing that currently succeeds changes. An unexpected condition during the second-server write is now reported as a failure on the record rather than absorbed into it.

Existing records are not re-evaluated. A method that already recorded Success on a server does not run again, so the corrected reporting applies to methods that have yet to run there. On a site with no second server configured, nothing changes.

Centralpoint Update 8.12.12
Monday, August 3, 2026
FeatureSummary
Centralpoint 8.12.12 maintenance - faster site map and console navigation, execution ceilings for long-running handlers, and console reliability fixesNavigation and site map performance. The client-facing site map and the console navigation tree were rebuilt by re-scanning the entire navigation table once per node. The cost grew sharply with the number of navigation items and surfaced as slow page loads and occasional request timeouts on larger sites. Both now build in a single pass. The navigation output itself is unchanged - this is purely a speed improvement.

Execution ceilings for long-running handlers. Three handlers that legitimately run for minutes had no ceiling of their own and inherited the ASP.NET 110-second default, which aborted them mid-operation:
  • Resource.ashx, which streams files and video to the browser, now allows 1800 seconds
  • Scripting/AsposeToImg.ashx, which renders a document thumbnail, now allows 600 seconds
  • WebServices/Utilities.asmx on Master now allows 18000 seconds


Each value is a floor, not an override - a site already configured higher keeps its own value. This changes web.config on every site; see the warning below. Note that the document thumbnail ceiling is a mitigation rather than a fix: a document that cannot convert is still retried on every view, which is tracked separately.

Console reliability.
  • Development > Content Audit now names the specific configuration entry or audience that is missing, instead of failing with a generic error
  • The Code File Manager no longer errors when opened with an unrecognized site in the address bar - it falls back to the current site
  • Logging entries created without a results count no longer fail
  • Trigger registrations are now cached in a form safe to read from concurrent requests, removing an intermittent failure under load


Security hardening. Several console detail pages built their database lookup by concatenating a value from the page rather than passing it as a parameter. All were converted to parameterized queries: Master > CMS > Keyword Lists, Master > CMS > Relations, Master > Admin > Private Labels, Master > Admin > Roles, and Development > Keyword Lists. Separately, predicate column validation on Master > CMS > Relations now checks the expression by compiling it rather than running it.

Deployment and server management.
  • The Centralpoint Agent's IIS repair now creates a site's missing /Api application, and corrects one that points at the wrong or a deleted application pool. Previously a site whose API was never mounted could report as healthy.
  • The deployment engine's file copy step now honors the same exclusion list its cleanup step already used
  • Master > Development > Sync Methods now keeps each site's local copy of sync-method history in step with the master record, so a site restored or copied from another server no longer inherits stale failures from its source
  • Master > Content > Web Sites no longer reports a successful API application pool restart when the restart actually failed, and now names the pool in the error


Background reliability.
  • Long-running process cleanup now uses a recorded activity timestamp, so a process that is still working is no longer marked as abandoned during a quiet phase
  • Static file references now carry an automatic version stamp, so browsers pick up updated files after a deployment instead of serving a cached copy
  • A failure to reach Uber is now consistently classified as an infrastructure issue rather than being reported as an application error, and those calls are time-bounded
  • Sign-in continues to work against the last known good signing key when the database is briefly unreachable, rather than failing outright


IMPORTANT - web.config changes in this release. The three ceilings above are applied by sync methods that edit web.config directly. Concretely they add or raise a ` block containing system.web/httpRuntime executionTimeout`:
  • Resource.ashx -> 1800, applied to each site's Root/Web.config and Console/Web.config
  • Scripting/AsposeToImg.ashx -> 600, applied to each site's Root/Web.config
  • WebServices/Utilities.asmx -> 18000, applied to the Master Root/Web.config only


The deployment touches the main site and Console web.config only. Two client-impact cases:

1. A virtual directory running as its own IIS application has a separate web.config that the deployment does not touch. If that sub-application serves Resource.ashx or the document thumbnail handler, it keeps the 110-second default and will still abort long downloads or renders. The same ` blocks must be added to that application's own web.config` by hand.
2. A site that has already raised any of these values keeps its own setting. These are floors, so no existing configuration is lowered - but confirm the intended value is still in place after the sync.

There are no binding redirect, handler, or module changes in this release, so client custom code needs no corresponding configuration change.
Word Viewer — tables now render at their defined widthThe Word Viewer now sizes tables to their defined width. Documents containing tables are rendered with a fixed-layout method that preserves each page's exact dimensions; previously a table could be drawn narrower than defined, sized to whatever text happened to sit in its cells. Where a table continued across pages this was most visible, since each page could be drawn at a different width and the pages did not match each other. Documents whose tables are wider than the page itself continue to use the standard responsive rendering, because a fixed-layout page would cut off the columns that fall past the page edge. Documents without tables are unaffected.

This is the same rendering method already used for documents containing floating shapes, text boxes, and anchored images.

Note on these documents: because fixed-layout pages keep their exact dimensions, they are not responsive. Very wide pages on small screens may require horizontal scrolling.

Clearing the cached file for a problem document

The viewer saves each converted document as an HTML file under the site's Temp\AsposeWordViewer folder so it does not re-render on every view. If a specific document renders incorrectly and needs to be regenerated (for example, after the source document is corrected), delete only that document's cached file.

Cache location: [site]\Temp\AsposeWordViewer\[document folders]\[filename].html
  • A document at /Uploads/Policies/charter.docx is cached at ...\Temp\AsposeWordViewer\Uploads\Policies\charter.html
  • Resource-based documents are cached at ...\Temp\AsposeWordViewer\Resources\[resourceId].html


Steps:

1. Locate the .html file that matches the problem document under Temp\AsposeWordViewer.
2. Delete that single file.
3. Reopen the document in the viewer; it regenerates automatically on the next view.

Important: delete only the specific problem document's cached file. Do not clear the entire AsposeWordViewer folder. Every viewed document is cached there for performance, and removing all of them forces every document to re-render.
Data Transform > Data Transfer - FileDownload "Save As Resource" now tracks files by a durable key so re-imported OneDrive files update in place instead of duplicatingThe FileDownload script's Save As Resource mode now identifies each imported file by a durable source key instead of the download link. Previously, transfers from OneDrive or SharePoint Online created a brand-new Resource on every run, because the OneDrive download link changes each time and the system could not recognize a file it had already imported. This caused the Resources list to grow on every scheduled run and the returned link to change each time.

With this fix, re-importing the same source file updates the existing Resource in place: no duplicate rows, and the link stays the same across runs. For OneDrive and SharePoint Online this is automatic (the file's own item id is used, scoped to its drive). A new optional Identity Column field has been added to the FileDownload script for other source types whose URL is temporary or signed; leave it empty for OneDrive.

The Resource System Name is now generated so the same source file always produces the same name, which keeps the /Resource.ashx?sn=... link stable across runs. When ResourceUrlByName is enabled, the returned link uses that stable System Name.

Important - one-time behavior on upgrade: existing OneDrive or SharePoint Online transfers already running under Save As Resource will create one fresh set of Resources on their first run after this update. The previously duplicated rows are left in place and simply stop growing; after that first run, re-imports update in place as expected. Older duplicate rows can be cleaned up separately if desired. This release makes no web.config changes.
Site Architecture > Module Designer > Personalized Dashboard — gadgets now carry stable CSS classes so individual gadgets can be styledEvery gadget on a personalized dashboard now renders with CSS classes that identify it, so a stylesheet can target one specific gadget or every gadget of a given type. Previously the only identifiers in the markup were generated from a gadget's position on the page, so they differed from user to user and changed whenever a gadget was moved. Styling an individual gadget was not possible, and matching on the gadget name did not work either because users can rename their own gadgets.

Each gadget wrapper now carries:
  • A type class on every gadget, naming the kind of gadget, such as cp-gadget-rss or cp-gadget-html.
  • An instance class where the gadget has an identity to key on. Preset gadgets use their record number, for example cp-gadget-6. Gadgets configured with a URL, meaning RSS and URL gadgets, use a simplified form of that URL, for example cp-gadget-rss-feeds-bbci-co-uk-news-rss-xml. These are the gadgets a user can add more than once, so the type alone would not tell them apart.


Neither class is affected by renaming a gadget or moving it to a different column or position. This means .cp-gadget-rss can style every feed alike while an instance class overrides a single one.

The available classes are documented in the PersonalDash module's Styles attribute, in the Dashboard group of the module view designer. The default styles now list the gadget type selectors, and new help text on the attribute describes the naming so it is discoverable without inspecting page markup.

No configuration changes are required. The classes begin rendering on their own once the sync is applied. There are no database changes, no new module settings to enable, and nothing to configure per site. Styling is opt in, so until a rule is added to the Styles attribute the dashboard looks exactly as it did before. Installations that have already customized their dashboard styles keep their existing styles untouched, and still receive the new help text describing the classes.

Note on record numbers: preset gadget record numbers are assigned per installation, while module view settings are carried between installations by the sync engine. A rule written against a specific gadget number will not point at the same gadget on a different installation, so those rules should be authored on the site where they will run. The URL based classes are not affected by this.

Two related corrections ship with this change:
  • SQL performance has been optimized when loading a dashboard. Dashboards containing preset gadgets now make considerably fewer database calls per page load, and the saving grows with the number of gadgets on the dashboard.
  • Each dashboard module view now keeps its own default gadget list. Previously every dashboard on a site shared a single cached list, so whichever dashboard loaded first determined what the others showed. On a site with more than one dashboard, a user who has never customized their layout may now see a different, correct set of default gadgets. Users with a saved layout are unaffected.

macro-enabled Word document (.docm) supportMacro-enabled Word documents (.docm) are now handled everywhere other Word formats are. Previously a .docm could be uploaded but nothing in the system would process it: the FileViewer CpScript rendered no link at all, the PdfViewer CpScript and the PDF and thumbnail handlers returned nothing, and the document's text was never added to the full-text search index. The file was accepted on upload and then effectively invisible.

.docm is now accepted by:
  • FileViewer and the Word viewer page
  • PdfViewer and the PDF conversion handler
  • Thumbnail and image generation
  • Full-text search extraction (the ResourceContent attribute)
  • Word document content attribute extraction
  • FileOutput template documents


Two related corrections ship alongside it. The FileViewer CpScript now also emits links for .xlsb and .xlsm spreadsheets, which the Excel viewer already displayed but for which no link was ever generated. And the FileOutput CpScript now matches template file extensions case-insensitively, so a template saved with an uppercase extension such as Template.DOCX is processed instead of being silently skipped, producing no file and no error.

The Word viewer's unsupported-format message has also been reworded to name the supported formats.
Admin > Duplicate Content — new tool for finding and reviewing duplicate recordsA new Duplicate Content tool finds records that hold the same content as each other and groups them together so they can be cleaned up from one place.

Each set of comparisons is configured as a scheduled task under Master > Content > Scheduled Tasks, choosing which modules to look at and which fields decide whether two records count as the same. Matches are found within a single module and across several, so the same content published in two places is reported together. The comparison ignores differences that do not change what a reader sees, such as formatting, spacing and capitalization, and it looks at one web site at a time.

Results are reviewed under Admin > Duplicate Content. Records that match are listed side by side with their module, dates and status, so the one to keep is easy to pick out. Redundant records can be deleted, which sends them to the recycle bin and leaves them restorable. Duplicates that exist on purpose can be dismissed instead, with an optional note explaining why, which stops them being reported without deleting anything. Anything dismissed can be put back into the report later.

The tool only reports what is true at the moment. Editing a record so it no longer matches removes it from the list on the next run, and deleting one removes it straight away. The first run examines every record and can take a while on a large module; later runs only look at what has changed since, so they finish quickly. An optional time limit keeps any single run inside a chosen window.

Each person sees only the groups and records their account already allows them to see elsewhere in the Console, so two administrators may correctly see different lists.




Data Transform > Data Transfer — new option to return Resource file URLs by System NameThe FileDownload script now has a new Resource Url By System Name option, available when Save As Resource is enabled. Normally, when a Data Transfer downloads a file and stores it as a Resource, the script returns the file's link using the Resource's Id (for example, /Resource.ashx?id=...). Some sites have existing preview and document-viewer scripts that expect the link in the System Name form instead (for example, /Resource.ashx?sn=...). Enabling this option makes the script return the System Name form. Both forms point to the exact same stored file. The option is off by default, so existing transfers are unaffected. The option only takes effect when Save As Resource is also enabled.
Master > Deployment > Updates - update installs now report every file that failed, and agent updates no longer block on a locked fileFile copying across the deployment path has been consolidated onto a single routine that checks its own work, and every place that copies files during an update, a patch or an agent update now uses it.

Update installs. An update that cannot write a file no longer stops at the first one. It finishes the file set, then fails with the complete list of files that did not land, so a single locked or read-only file no longer hides everything after it. A destination marked read-only is now cleared and written instead of aborting the run. After each section is copied, the applied files are reconciled against the update package and any file that is missing or a different size is reported as a warning on the process status and in the error detail - previously a partially applied file set looked identical to a complete one. The install also no longer leaves the Master API application pool stopped when it fails: the pool is restarted before the failure is reported.

Agent and CLI updates. The Centralpoint Agent and Centralpoint.exe are now replaced by renaming the existing file aside and writing a fresh copy, rather than overwriting the running file in place. Overwriting required exclusive access to a file that was in use, so on servers where antivirus, a file indexer or a backup agent holds a handle the update could not succeed at any retry count and needed a manual copy every release. If the replacement cannot be completed, the previous file is put back, so the service is never left without a working executable. The agent service is also now confirmed to reach Running before the update reports success.

Patches. Each file a patch writes is now read back and compared against the file the patch shipped. A mismatch is reported with the expected and actual values and the patch reports failure instead of success. A patch that stops an application pool now waits for it to come back and reports failure if it does not. When a patch cannot land its files for a site, that site's configuration step is skipped rather than applying binding redirects for assemblies that did not arrive - the redirects for other sites on the same server still apply as normal. A patch that reports failure is no longer recorded as applied, so it can be re-sent.
Master > Deployment > Synchronize - one sync per site at a time, with truthful reporting and a recoverable data syncSynchronizing a site is now protected against overlapping runs. Only one synchronization can run against a given site on a server at a time. Under Master > Deployment > Synchronize, a site that is already synchronizing is shown as in progress and cannot be selected, and starting another run against it reports that it was skipped rather than starting a second one. Selecting several sites still synchronizes the ones that are free.

The synchronization also now reports what actually happened. Previously a run could report Sync Completed even when it had failed internally, when a deployment step failed, or when the data synchronization declined to run. Those outcomes are now reported as failures on both the page and the process record, and a data synchronization that refuses because the site has no recent backup says so instead of finishing silently.

Data synchronization is safer and more recoverable:
  • The data synchronization will not delete content when another process is interfering with the working tables it uses. It stops with a clear message instead.
  • A single file marked read-only no longer aborts an entire synchronization. The file is corrected automatically and the run continues.
  • Recovering content no longer depends on the file copy finishing first. The database work runs even if the file phase fails, and All Elements no longer forces every file to be re-copied, so restoring content completes on large sites instead of timing out.
  • Long file copies now report their progress, so a healthy run is no longer mistaken for a stalled one.


Under Master > Development > Process Monitor, processes now record who started them rather than appearing as automated, keep their status current even during quiet phases, and the page loads faster on installations with a large process history.
Admin > Properties - new Protect Statistical Semantic Search option, ahead of the v8.12.13 removalA new Protect Statistical Semantic Search property has been added under Admin > Properties. It controls whether this site keeps Statistical Semantic Search when the feature is removed in v8.12.13.

Statistical Semantic Search is an optional SQL Server feature that Centralpoint does not create and does not require. Where it is present it was enabled by hand on the database server. A stalled semantic index rebuild can consume enough database resources to slow or stop a site, so the feature is being retired across all installations.

The property defaults to No, which means the removal will run on this site. Set it to Yes only if this site actively uses semantic search. Taking no action means Statistical Semantic Search will be removed from this site in v8.12.13.

What the v8.12.13 update will do on a site that has not opted out:
  • Remove the semantic option from the site's full text indexed columns.
  • Retire the semantic example Data Sources under Design > Data Sources. These are archived rather than deleted, so they remain retrievable.


Ordinary keyword search and Contextual Search are not affected - only the per column semantic option is removed. Removing it causes SQL Server to rebuild the full text index, so the v8.12.13 update should be scheduled outside business hours.

Clients who have copied a semantic example Data Source into a live page should review those pages before v8.12.13, or set this property to Yes to keep the feature on this site.
Site-wide - links built from the current page address are now encoded (security)Links that Centralpoint builds from the address of the page being viewed are now encoded before being written into the page. This affects the breadcrumb trail (BreadCrumbTrail), the Enable/Disable Edit Mode link (EditMode), the "Export to Excel" links and the record Add/Edit/Delete actions on dashboard views (LeadsDashboardScript, TrafficDashboardScript, DashboardAction, BuldLink, CompanyNavigation), and the Yahoo Calendar link produced by AddToCalendar.

Previously a visitor could append specially crafted text to a page address and have it treated as part of the link markup rather than as part of the address. The encoding closes that. It is deliberately narrow so existing links are unaffected: addresses that already contain encoded characters, such as & in a query string, are left exactly as they are, so paged, filtered and taxonomy-filtered views continue to link as before.

This is a code-only change delivered with the update package. There is no configuration, CMS or database change, and nothing to enable.
Admin > Global Login - hardened post-login redirect for SAML sign-in (open-redirect fix) SAML sign-in now validates the destination a user is sent to after a successful login. Previously the return destination could be supplied in the sign-in link and was followed without checking, so a crafted link could route a user to an outside website immediately after a genuine login. The sign-in flow now only honors a destination that is a path on the same site, or a full web address on the same site''s own domain; anything pointing to a different domain (or an unreadable value) sends the user to the site home page instead. Destinations an administrator configures on a Global Login record (the RedirectTo setting) are unchanged and continue to work, including a full same-site address such as https:///section/page. The new check applies to both service-provider and identity-provider initiated sign-in, and to the redirect shown after a failed sign-in.
Admin > Authorizations - resolved repeated reauthorization prompts on Microsoft connectionsChanges Made

Some clients reported having to reauthorize their Microsoft connections over and over. An authorization would complete successfully, work for about an hour, and then report that it needed authorizing again. Reauthorizing restored it for about another hour, indefinitely.

It was most commonly identified on Data Transfer records using the Office 365 and SharePoint readers, since those depend on the connection staying live between scheduled runs.

The cause was a missing or out-of-date address for the master in the Azure application's Redirect URI list. Microsoft access is renewed automatically about once an hour, and that renewal was sending the master's address for Microsoft to check against that list. Where the address was absent, or still pointed at a previous server after a migration, Microsoft rejected the renewal. The initial authorization was unaffected because it runs against the site address, which is normally registered, so authorizing always appeared to work and only the renewal behind it failed.

The renewal no longer sends an address at all, which is what the Microsoft standard calls for on that step. A missing or stale master entry no longer causes the connection to lapse, and a future server, domain or IP change will not break an existing connection the same way. No configuration changes are required to resolve this on either the Centralpoint or the Azure side. Reauthorizing an affected connection once after the update is enough.

A second, related correction: on a multi-site install, a renewal triggered from a Data Transfer was being saved against the master instead of the site the connection belonged to, leaving the site's own record untouched.

Where a renewal does fail, the failure report now names the install it came from. Reports of this kind are collected centrally and previously gave no indication of which client produced them.

The Redirect URL attribute on an authorization record at Admin > Authorizations is now documented. Leaving it blank uses the built-in callback address, which is correct for nearly every install, and any value entered there must be registered in the Azure application.

The master address should still be present in the Azure Redirect URI list, because an authorization started from the Master console continues to use it. It is no longer involved in the hourly renewal, so a missing entry now surfaces immediately when authorizing rather than an hour later.

The Authorizations help article has been rewritten to cover the Redirect URI requirements, where each address is found under Admin > Console Settings, and what to re-check after a server move.
Master - 8.12.12 maintenance: reliability fixes across sync, scheduled tasks, sign-in, and the console (raises the Utilities.asmx execution ceiling)This is the roll-up for the 8.12.12 weekly maintenance pass. Every item came from a real failure observed on a client install, not from planned feature work.

Execution ceiling for Utilities.asmx raised to 5 hours. Utilities.asmx and ScheduledTasks.asmx both run the same cleanup sweep across every web site, but the shipped ceiling depended on which endpoint the caller used - 15 minutes on one, 5 hours on the other. A client's cleanup aborted mid-sweep at exactly 15 minutes. Both endpoints now allow 5 hours. This is a web.config change - see the warning below.

Sign-in no longer breaks the page when the central server answers with an error page. If the central server returned a maintenance page or an error page instead of a normal response, sign-in raised an unhandled error and took the page down with it. It now denies the sign-in cleanly and records the reason. Any password present in the returned content is masked before it is recorded.

Console navigation survives a brief loss of contact with the central server. The list of groups a site belongs to is read from the central server on every console render, so a momentary network blip could empty the navigation. That list is now cached for an hour, with the last known good value served through a short outage and a ceiling past which it stops serving stale data. A failure for one site no longer affects any other.

Health Monitor loads its notes in one pass. The records view previously issued a separate query for every row on the page. It now loads them together, in batches, so a large page size no longer slows the page or exceeds a database limit.

Data Broadcast: unsubscribed-recipient list. When a broadcast was configured to unsubscribe bad email addresses, the resulting list was never produced. It is now generated for both bad-address and duplicate-address modes, and each batch writes to its own folder instead of nesting inside the previous one.

Data Archive: the configured timeout now applies to the whole run. The extended timeout was applied several statements too late, so the earliest steps still ran under the default and could abort on a large archive.

Installs no longer abandon sync methods during a cold start. When a site was still starting up, an internal call could fail on its first attempt and the remaining sync methods were skipped, leaving them Pending. Those attempts are now retried - but only where the response proves the work never began, so a retry can never start the same sync twice.

Article pages no longer fail when search telemetry is slow. Recording search insights held the page open until the remote service answered. Those calls are now bounded and, if they fail, the article still renders.

Marketplace Directory contact lookup now passes its record identifiers safely, and Query Analyzer releases its saved-query connections properly.

Diagnostics added where a failure previously reported nothing useful. Impersonation failures now record the underlying Windows reason, central-server call failures record the transport status, and the Process Monitor no longer suggests a cause that has been ruled out.

Agent and CLI updated to 8.12.12.0 and delivered by this sync.

web.config warning. This release changes Master/Root/Web.config: the WebServices/Utilities.asmx location's executionTimeout goes from 900 to 18000 seconds. Existing installs are upgraded by the RaiseUtilitiesAsmxExecutionTimeoutTo18000 sync method, which is floor-only - a client who already raised the value keeps theirs, and an install already at 18000 is unchanged. Only the Master site's own web.config is touched.
  • Virtual directories running as their own IIS application have a separate web.config that this deployment does not touch. If a sub-application calls Utilities.asmx, its cleanup still aborts at whatever ceiling its own config carries. Apply the same executionTimeout there by hand.
  • The usual custom-code concern does not apply here: this changes a timeout value only, with no assembly, handler, or module changes, so nothing that loads today can fail to load after it.

Centralpoint Update 8.12.11
Monday, July 20, 2026
FeatureSummary
Weekly Maintenance 8.12.11 - site search self-heal, update-install serialization, an API authentication status change, security fixes, and console clarityThe weekly maintenance release for 8.12.11. Two items below need attention on installations with custom code or custom integrations, and are called out separately at the end.

Site search
  • A stalled search index now recovers on its own. The health check previously treated any index reporting an active population as healthy and busy, so an index whose population had stopped progressing was skipped on every sync and cleanup indefinitely, and the site returned no search results with no error. It is now treated as stalled once it has run past a generous threshold with nothing indexed against a table that has rows, and repaired - releasing automatic change tracking first, because the database engine otherwise declines the stop request and the index stays stalled.


Updates and deployment (Master)
  • Concurrent update installs are prevented. The pipeline uses one fixed working folder, and a finishing run removed it before stamping the version, so a second in-flight run lost its extracted package and failed reporting an incomplete update package. Installs are now serialized per installation and a second run declines cleanly.
  • A reused backup is verified before it is trusted. A completion marker is written only after every file has copied, and the retry path requires it, so an interrupted backup is no longer treated as complete. Long file paths are handled throughout, including the marker itself.
  • A leftover file that cannot be deleted no longer aborts an install after the file tree has already been replaced, which previously left a partially applied update.
  • Removing a deployment target no longer fails with a database syntax error.


Scheduled tasks (Master)
  • The scheduled-tasks endpoint execution timeout is raised to 5 hours, so a pass on an installation with many sites no longer ends part-way. See the web.config note below.
  • The webhook step that runs first on each pass now retries a transient database failure instead of reporting an error and skipping the pass. Only failures that fail immediately are retried; a command that already used its full time budget is not, since re-running it would hold the queue for the same result.
  • The nightly cleanup task and the development build task now coordinate across the whole server rather than only within one application, closing a case where a restart between them allowed an overlap that left the cleanup hanging.


Processes and error reporting
  • The stale-process sweep now clears every orphan in one pass. A single failure previously ended the sweep, so a backlog cleared at roughly one per night.
  • The error-reporting path itself is now tolerant of failure, so a problem while recording an error cannot interrupt whatever was reporting it.
  • Failures reaching the central error-reporting service are classified correctly again, restoring the rate limiting they had lost.
  • A.D.A.M. content-service failures are now reported instead of being written to a trace channel that is disabled outside development, where an outage produced an empty result that looked like a customer with no products.
  • A request that is aborted mid-page - a timeout, a recycle, a visitor navigating away - is no longer reported as a Module Designer Results View failure against a correctly configured view.


Console
  • On AI Governance > AI Providers, the model row now labels itself by what its button actually does. It previously read Set as Generative Default on every provider, but only the provider card's button switches the active provider; on any other provider the model row records the model and leaves the active provider alone, while still reporting success. It now reads Use as this provider's model in that case, and the dialog and confirmation say so.
  • On API > API Test Center, a failed Site Info call reports the real reason instead of a NullReferenceException. Where the API returns no message, which is normal for an authentication refusal, the card says so and names where to look.


Security
  • The SAML callback test page validates its return path at the source rather than trusting the query string, closing an open-redirect and a script-injection route, and its identity-provider lookup is now parameterised.
  • An upload path is decoded before validation and its resolved location confirmed inside the site root before any file is written, closing a path-traversal route through an encoded value.


Other
  • The vector orphan cleanup is batched so the recurring reconcile sweep no longer times out on a large backlog.
  • A signature form no longer fails when its temporary image cannot be removed. Pressing Start Over previously produced an unhandled error and lost the visitor's signature if the file was briefly held by another process. Also applied to the change-request approval flow.
  • The website activity log no longer shares one buffer across request threads, and no longer drops entries when a flush coincides with a page write.
  • A site's most recent backup date is now the newest backup rather than an arbitrary one.


ACTION 1 - web.config change. This release includes a sync-invoked change to the Master site's web.config: the ` block for WebServices/ScheduledTasks.asmx has its executionTimeout raised to 18000 seconds (previously 900). The deployment updates the Master site's own web.config` only.
  • A virtual directory that runs as its own IIS application has a separate web.config that this deployment does not touch. If such a sub-application serves this endpoint or inherits configuration expectations from it, apply the same change by hand in that application's own web.config, or it keeps the old limit and the task can still end early there.
  • A client-specific ` block for the same path will conflict. If your installation already defines its own , confirm after the sync that the effective executionTimeout` is the intended value and that your other attributes in that block survived.


ACTION 2 - API authentication failures now answer 401 instead of 403. A request carrying no credentials, or a session cookie that fails validation, is not authenticated, which is what 401 Unauthorized means; 403 means authenticated but not permitted. The API now returns 401 with a WWW-Authenticate: Bearer challenge. This also fixes a real symptom: the console's API client only refreshes and retries on a 401, so a page left open past the token lifetime received a 403 that never reached the refresh path and showed what looked like a permissions error until reloaded. Any custom integration, script, or monitoring rule that tests specifically for 403 to detect a missing or expired credential should be updated. A genuine authorization refusal, where the caller is authenticated but lacks access, still returns 403.

Separately, a web site's Modify Date now reports its own value rather than repeating the Last Update Date, so the two can legitimately differ on existing installations - review any custom code that relied on them matching.
Data Transform > Data Transfer — JSON source can select the table by name, not just by indexThe JSON source in the Data Transfer module can now select which table to read by name instead of only by its numeric position. A new Get Table By option (JsonGetTableBy) lets you choose Index (the existing behavior, the default) or Table Name. Choosing Table Name reveals a Table Name field (JsonTableName) where you enter the table's name; matching is case-insensitive and ignores surrounding spaces.

This solves feeds whose table position shifts from page to page (common with nested third-party APIs), where the correct index number kept changing and had to be re-checked on every run. If the entered name isn't found, the transfer fails with a clear message in the Process Log that lists every table name discovered in the response — so you can copy the exact name — rather than silently reading the wrong table.

Existing transfers are unaffected: any transfer configured with a number continues to use that index with no changes and no re-validation.
AI Governance > AI Data Source Tuner - AI data sources and AI search now respect multi-tenant filtrationOn sites using Multi-tenant Audiences filtration, the Page Assistant now applies the same tenant filtering to AI data sources and AI search results that a page already applies to its content. Previously a visitor could be offered a data source, or see a search result, that the equivalent page would have hidden from them. Sites that do not use multi-tenant filtration are unaffected and see no change in behavior or speed.

Custom tenant rules are honored as-is, including installations with their own tenant provider, so no configuration changes are required.

Note that AI Governance > AI Data Source Tuner is a console tool and is intentionally not tenant filtered, matching how every console screen behaves. It will therefore list every data source flagged Available to AI, including ones a particular visitor would not be offered. This is expected and is the correct way to review the full set.
Console login - login source is now verified, and ancestor admins may be asked to sign in onceThe record of which console a user signed in from is now verified by the server on every request instead of being taken at face value from the browser. This closes a gap where a signed-in website member could present themselves as a Master or Uber administrator and see content outside their own audience and role scope, including through the API and AI search results.

Front-of-site visitors are not affected and will not be signed out. The first time a site is updated, an administrator who signed in from Master or Uber and is working in a console may be asked to sign in once more; after that, sessions behave exactly as before. No settings need to be changed and there is nothing to enable.
Forms — Content Security Policy hardeningForm and search buttons previously deferred their submission by handing a string of JavaScript to a browser timer. Browsers treat that as dynamic code compilation, which a Content Security Policy blocks unless the 'unsafe-eval' directive is allowed. On sites enforcing a policy without that directive, form and search submissions failed silently. Buttons now defer through a direct function call instead, so no code is compiled from a string. Submission behavior is otherwise unchanged.

This affects every FormButton and FormImageButton that does not supply a custom onclientclick, which is the standard configuration. Buttons using postBackUrl, or formAction set to ExecuteSearch, submit across pages and are the most likely place to notice any difference.

The same pattern was corrected in several form controls and module views that also handed strings to browser timers: the FormEditor rich text iframe, the FormTaxonomy, FormAudience, FormPagedListBox and FormDataListBox pickers, the FormOneDrivePicker, the form builder used by the Forms Wizard, the Mail Contacts Calendars session timeout, and the timed automatic submission in Education and OCE tests. Script versions were bumped for each, so browsers fetch fresh copies on first load after this sync.
Data Transform > Data Transfer - Cleanup can no longer stop the application poolData Transfer sources and destinations release their files, connections and other resources when a transfer finishes. If that cleanup was left for the system to perform later instead of happening at the end of the transfer, it could run at a point where the information it needed was no longer available - and a failure there stopped the entire application pool, dropping any requests in progress. Because it happened outside the normal error path, it was never recorded in the Errors list; it appeared only in the server's event log.

Cleanup is now performed only at the proper point in a transfer, and a cleanup problem is reported through the transfer's status instead of being discarded or allowed to stop the pool. Several sources and destinations were also made tolerant of a transfer that fails while starting up - a delimited text or Excel source, a SharePoint source, and a staff list source - so they close cleanly rather than raising a second error on the way out.

QC Notes:

URLs: https://master.xodev26.com/ScheduledTasks.aspx?sn=ScheduledTasks
Master > Development > Errors - API errors that were previously only in the server's event log now reach the Errors listThe API now reports errors it had been handling quietly. Previously, when the API hit a problem it could recover from, it recorded the details only in the Windows event log on that one server - so the error never appeared in Master > Development > Errors and was invisible unless someone signed into the server and looked. Those errors now reach the central Errors list alongside everything else, with the local event log kept as the fallback for the one case it has to cover: the central store itself being unreachable.

Two safeguards ship with it. Repeated occurrences of the same error collapse into a single entry rather than filling the list, and a set of routine, high-volume messages were reclassified as warnings so they stay out of the Errors list entirely - health checks, per-request AI and Word Add-In failures, background retries that resolve themselves, and rejected sign-in tokens. The intended net effect is more genuine issues visible and less noise, not simply more entries.

Sensitive request values are now removed before an error is stored. Authorization headers, agent secrets and cookie values are replaced with [redacted], so a stored error can no longer contain a live credential. Other request details - page address, referrer, browser - are unchanged, since those are what make an error diagnosable.
Admin > Global Login — Word Add-In SSO returns to the plug-in after MFA; failed-SAML-login page now redirects home
  • Word Add-In sign-in. After completing MFA, the Word Add-In sign-in now returns directly into the plug-in instead of landing on the site dashboard, so users no longer have to close the sign-in window by hand for the plug-in to load. The return destination is now carried through the identity-provider round trip via SAML RelayState, which survives the session loss that happens inside the Office sign-in dialog. Only the Word Add-In sign-in flow uses this; all other SAML logins are unchanged.
  • Failed-SAML-login page (affects all SAML clients). The page shown after a failed SAML login now sends the user to the site home page (/) after a short delay, instead of refreshing the failure page in place. This is a side effect of hardening that page's automatic redirect against a cross-site-scripting / open-redirect issue. Successful logins are unaffected.
Design > Dynamic Tab Display - tab links now open the first tab, and the remembered tab is per record=====================================================================
CHANGES MADE
=====================================================================
Two fixes to how the Design > Dynamic Tab Display module decides which tab opens.

Tab links now work for the first tab. A tab= parameter on a page URL selects the matching tab. Previously every tab number worked except the first: tab=1 was ignored. On tab sets with Remember Clicked Tab enabled that meant the page opened on whatever tab was last visited instead of the first. Elsewhere the first tab opened regardless, so the problem was only visible where that option was in use. Links pointing at the first tab now behave like all the others.

The remembered tab is now specific to the record being viewed. When Remember Clicked Tab is set to Yes, the last tab clicked is restored on the next visit. Because one configuration record is shared by every document in a Details View, that memory previously carried from one document to the next: opening a record on its third tab and then opening a different record landed on the third tab of the new record as well. The remembered tab is now tracked per document, so each record opens on its first tab while still restoring the correct tab after a form submission on that same record.

The Active Tab property is unchanged, as is tab behavior on pages that are not Details Views.

One time reset. Existing visitors have a stored tab position in the previous format. It is discarded on the first visit after this update, so tabs open on the first tab once per user. No configuration change is required.

Design > Data Sources - Raw HTML sources can now be exposed to the Page AssistantThe Raw HTML formatting option is now certified for the Page Assistant, joining Chart (Advanced). On a Data Sources record with FormattingOptions set to Raw HTML, the Available to AI switch now appears; turning it on reveals AIDescription, AIPresentation, and AIShowExpand exactly as it does for charts.

When the Page Assistant selects a flagged Raw HTML source, the record's rendered markup appears inline in the chat reply - including its own RHStyles and RHScripts - produced under the asking user's own permissions, not the author's.

Two changes affect all certified render types, not just Raw HTML:
  • Rendered output now matches the conversation's text size. Previously a data source rendered in a chat reply inherited the host page's base font size, so text-based output appeared noticeably larger than the surrounding conversation. This was not visible with charts, which contain no text.
  • Eligibility scanning has been hardened. A source whose templates used the cpsys_Apos script-safe placeholder to wrap a request-context script - Querystring, cookie/session, or current-record scripts - previously passed the eligibility check and will now correctly show as Excluded. This closes a gap where such a script could run in the detached render. Any affected source will name the offending script in its exclusion reason in the AI Data Source Tuner. This applies to existing Chart (Advanced) sources as well as new Raw HTML ones.
Word Viewer — multi-column Word documents now keep their column layoutChanges Made

The Word Viewer now preserves Word's multi-column page layout. A document that uses Layout > Columns in Word (a two- or three-column newspaper flow) previously rendered as a single stacked run of paragraphs, losing the side-by-side arrangement of the original. These documents are now rendered with the same fixed-layout method already used for floating shapes and anchored images, which reproduces the column flow exactly as Word lays it out. Documents that do not use multiple columns or floating shapes continue to use the standard responsive rendering and are unaffected.

Note on these documents: because fixed-layout pages keep their exact dimensions, they are not responsive. Very wide pages on small screens may require horizontal scrolling.

Important for documents already viewed: the viewer only re-renders a document when its source file changes, so a multi-column document that was viewed before this update keeps serving its cached single-column version. That document's cached file must be deleted once for the new column layout to appear.

Clearing the cached file for a problem document
The viewer saves each converted document as an HTML file under the site's Temp\AsposeWordViewer folder so it does not re-render on every view. If a specific document renders incorrectly and needs to be regenerated (for example, after the source document is corrected, or for a multi-column document viewed before this update), delete only that document's cached file.

Cache location: [site]\Temp\AsposeWordViewer\[document folders]\[filename].html
  • A document at /Uploads/Policies/charter.docx is cached at ...\Temp\AsposeWordViewer\Uploads\Policies\charter.html
  • Resource-based documents are cached at ...\Temp\AsposeWordViewer\Resources\[resourceId].html


Steps:
1. Locate the .html file that matches the problem document under Temp\AsposeWordViewer.
2. Delete that single file.
3. Reopen the document in the viewer; it regenerates automatically on the next view.

Important: delete only the specific problem document's cached file. Do not clear the entire AsposeWordViewer folder. Every viewed document is cached there for performance, and removing all of them forces every document to re-render.
Forms > Forms Wizard - added Cloudflare Turnstile as a CAPTCHA option in FormCaptchaThe FormCaptcha form control now supports Cloudflare Turnstile as a fourth CAPTCHA provider, alongside the classic image CAPTCHA and Google reCAPTCHA v2 / v3 Enterprise. Turnstile is a privacy-friendly CAPTCHA (no cookies, no user tracking) and is HIPAA-compatible, giving forms that collect sensitive information an alternative to Google reCAPTCHA. When configuring a Captcha element in Forms > Forms Wizard, setting Use ReCaptcha to No now reveals a Use Cloudflare Turnstile option. Turning it on shows a Cloudflare Instructions help panel (step-by-step account setup with links) plus fields for the Turnstile SiteKey and Turnstile SecretKey (both required), and optional Theme, Size, and Action settings. The widget renders on the published form and is validated on submit against Cloudflare''s verification service. Existing forms using classic CAPTCHA or reCAPTCHA are unaffected.
Site Navigation - resolved intermittent navigation and console errors on long running sitesOn rare occasions a site could report an error stating that a type "cannot be cast to" itself, most often on pages using the NavigationSectionMenu script, in the console navigation, or in a shopping cart. This happened when the server briefly held two compiled copies of a site's application code at the same time, usually after files were updated or the application restarted. The affected pages have been reworked so they no longer depend on which copy is active, and they now recover on their own instead of failing. Where a page previously stopped with an error, it now rebuilds what it needs and continues. There is no change to how any page looks or behaves under normal conditions. Clients who have seen these errors, including intermittent failures in the console audience and site wizard screens, should no longer see them.
Design > Dynamic Navigation - menu stylesheet is now cached, removing a database read from every page loadThe stylesheet that renders a Dynamic Navigation menu was rebuilding itself from the database on every request instead of using its cache. The cached copy was being stored correctly but could never be read back, so each page that displays a dynamic navigation menu paid for an extra database lookup before it could render. The stylesheet now reads its cache correctly and serves the stored copy. Menus look and behave exactly as before; the only change is that the extra database read is gone. Sites that use Dynamic Navigation on high traffic pages will see the largest benefit. The cache still clears automatically whenever a dynamic navigation record is edited, so style changes continue to appear immediately.
Forms > Forms — signature fields now resolve their save location on the serverSignature capture fields on a form now determine where the signature image is saved entirely on the server, using the location recorded when the form was displayed. The submitted request can no longer influence the save location at all. If that recorded location is missing — most commonly because the visitor's session expired while the form was open — the signature is refused rather than saved to a fallback location. This is a security hardening change. The practical effect for visitors is that a signature submitted after a session has expired will not be saved, where previously it may have been written to an unintended location. Forms completed within a normal session are unaffected. A separate correction in the same area fixes cases where a validly configured save location could be rejected, depending on how the folder path was written in the site's configuration.
Reporting > Report Builder — clearer message when an export format is not recognisedExporting a report with an unrecognised or mis-typed format value now returns a clear message naming the formats that are supported, rather than failing with a generic error. Format names are also matched without regard to capitalisation, so a value such as tabdelimited is accepted the same as TabDelimited. This most often surfaced when a browser extension or a copied link appended extra text to the address.
AI Governance > AI Providers — copy a model id, failover guidance, and a retired OpenAI model flaggedThe AI Governance > AI Providers page now offers a quick way to copy a model's id to the clipboard, so it can be pasted into a module or provider configuration without retyping it. A short note has also been added explaining how provider failover behaves.

Separately, OpenAI's gpt-5-chat-latest model has been retired by OpenAI and now returns an error if selected. It is still listed, marked as retired, and shows its replacement so any site still pinned to it can be moved across rather than silently failing. New installations now default to gpt-5.5. Existing sites keep whatever model they already have configured and are not changed automatically — a site pinned to the retired model needs to be updated manually.
Admin > Properties - Sync Exclusions now accept wildcard patternsThe Sync Exclusions property on a web site (Master > Content > Web Sites) now accepts wildcard entries using and ?, in addition to the existing exact paths and file names. This lets a site protect a whole family of custom assemblies with one entry — Ebix., Syncfusion., haymarket — instead of listing every file individually. Both entry styles accept wildcards: a bare pattern such as Ebix. matches at any depth, and a rooted pattern such as /Bin/Ebix. matches that path only.

Wildcard entries protect a file from being removed, but never from being replaced. This is deliberate. An exact entry has always meant "leave this file alone entirely," while a wildcard entry means only "do not delete anything matching this." That distinction is what makes the feature safe: a pattern can never accidentally block delivery of a platform file, which would leave a site with mismatched program files. Exact entries keep their existing behaviour unchanged.

Previously, a site whose exclusion list did not name every custom assembly lost the unlisted ones on every update — the update removes anything absent from the delivered package, and a parent-to-child sync hid the problem because the parent still had the files. An incomplete list is the common case, since it goes stale as soon as a client adds an assembly, so declaring families rather than individual files is now the recommended approach.

The same exclusions are now honoured in three places that previously did not consult them fully: the sync to a load-balanced secondary server, the My Updates deployment, and the repair operation. Repair reads them from a small generated file in the site's App_Data folder, written on each sync — so a site must complete one sync on this version before repair can honour its list.

Note that the on-screen help text for the Sync Exclusions field has not yet been updated to describe patterns.
Design > Media Manager - added Created, Roles, Audiences, Groups, and a file-link column to the grid Changes Made:
The Media Manager grid (Design > Media Manager) now shows additional columns so staff can scan and organize the media library more easily:
- Created - the resource creation date, sortable, alongside the existing Modified column.
- Roles - the roles assigned to each resource, shown as names.
- Audiences - the audiences assigned to each resource, shown as names. This populates only when resource audiences are enabled for the site; otherwise it appears blank.
- Groups - the Resource Groups assigned to each resource, shown as names.
- Link - an "Open" link that opens the resource file in a new browser window.

Roles, Audiences, and Groups may list multiple values separated by commas. The new columns are display-only (Created is sortable). No configuration or database changes are required.
Data Transform > Data Transfer: new Microsoft Teams Meetings sourceA new Microsoft Teams Meetings source type is now available in the Data Transfer module (Data Transform > Data Transfer). It imports Teams meetings into Centralpoint as one record per meeting, capturing the meeting title, date and time, duration, organizer, participants, chat, transcript, recording link, and shared files.

It offers two capture modes, selected by the new Source User Scope option:
  • My meetings signs in as a single user and imports the meetings that user organized.
  • Cross-user modes (Pick users, All users, By department, By group) run organization-wide and import meetings organized by the selected users, using an application (org-wide) authorization plus a Microsoft Teams application access policy.


Additional source options include a Source Date Range (rolling last-N-days, or a fixed UTC window) and Download Shared Files (store shared files as links, or download them into Uploads). Each meeting is assigned a stable identifier so repeat runs update existing records instead of creating duplicates: set the destination to Incremental (Insert/Update) matched By DataId, with Delete = Previous Execution of this Transfer so cancelled meetings drop out automatically.

Because the connector reads Teams data through Microsoft Graph, the client's Microsoft 365 administrator must grant the required Graph permissions, and for cross-user modes create a Teams application access policy. Full setup steps are provided in the tenant setup guide.
Admin > Settings — Upload & Data Limits saves are now validated, floored, backed up, and recoverable, and apply to both the Website and the ConsoleThe Upload & Data Limits section under Admin > Settings (Max JSON Length, Max Request Length, Execution Timeout, Max Allowed Content Length) has been hardened to make configuration changes safer, consistent across applications, and reversible.
  • Improved validation. The Upload & Data Limits fields are now validated when Save is clicked, so out-of-range or malformed entries are caught up front with a clear message under the field rather than being accepted.
  • The change is checked before it is applied. Before the site's configuration is updated, the pending version is verified to be structurally valid and the Upload & Data Limits values are confirmed to load correctly. If anything is invalid, the save is aborted and the current configuration is left in place, so a bad entry can't leave the site unable to start.
  • Automatic backup on every save. The current configuration is backed up immediately before each save (last-known-good) so a change can be undone in one step. Backups are kept under the site's Temp\Console_Settings folder, organized into per-application subfolders (Root for the Website, Console for the Console). If a backup can't be created, the save is aborted and nothing is changed.
  • Applied to the Console application too. The Upload & Data Limits are now applied to the Console application's own configuration, not just the main site, through the same validate-backup-apply path. One save now covers both applications, so there is no hidden second edit to remember. Only the top-level settings are written, so the Console's per-page overrides are preserved. This matters because some controls are shared between the main site and the Console and rely on these settings (particularly Max JSON Length), so applying them in both keeps behavior consistent. A blank field removes the setting in both configurations, so the two stay in step.
  • Execution Timeout guardrail. An Execution Timeout above 3600 seconds (1 hour) now requires the administrator to tick an acknowledgment checkbox before the save proceeds, because an over-high global timeout can hold a worker thread and risk exhausting the server's thread pool. The checkbox and its message appear as soon as a high value is entered (on leaving the field), and the save is blocked until the box is ticked. The acknowledgment is required again on each save that keeps a high value.
  • Minimum values (floors). Each field is now floored at its framework/IIS default (Max JSON Length 2097152 bytes, Max Request Length 4096 KB, Execution Timeout 110 seconds, Max Allowed Content Length 30000000 bytes). Below-default values have no legitimate use from this page (blanking a field already yields the default) and a too-small Max Request Length or Max Allowed Content Length could reject the Settings save itself and lock the administrator out of the Console. Setting a value below a default still requires a manual web.config edit.
  • New info callout. A notice above the Save button explains that the limits apply to both the Website and the Console, that the minimum values are the framework defaults, and that every save is automatically backed up (and where to find the backups).


Centralpoint Update 8.12.10
Monday, July 6, 2026
FeatureSummary
NLS & AI > AI Architecture - new capability map with live status, guided setup, and a downloadable setup guideA new AI Architecture page has been added under NLS & AI > AI Architecture. It gives administrators a single, always-current map of every AI and Natural Language Search capability on the site - what each one is, how the pieces connect, the order to turn them on, and each one's live configuration status.

The page has two tabs:
  • Architecture & Status - a layered diagram (Foundation, Data Preparation, AI Experiences) plus the related cross-cutting tools, with each capability badged by its current state (Configured, Partial, Off, or Available). It distinguishes the two ways AI reaches the assistants: answering directly from a provider versus retrieval from the vector index (RAG). Header chips summarize the site at a glance - whether AI Chat and Summarization are enabled, the default provider and embedding model, vector-index availability, and how many features are configured. Clicking any capability opens a help panel with why you go there, step-by-step setup instructions with the exact buttons to click, optional settings, prerequisites, and a link straight to that Console page; where relevant it shows a copyable sample configuration.
  • Guided Setup - an ordered checklist for turning AI on, each step marked done / next / not-started against the site's live state, with a worked example, a link to the relevant page, and an advanced site-properties reference.


A Download setup .md button generates a complete setup document combining the capability reference, the guided-setup checklist, and the site's current configuration - intended to be pasted into a local AI to get tailored setup help.

Separately, under NLS & AI > AI Properties, the AI Chat and AI Summarization switches are no longer labeled "(beta)", and the on-page AI Summarization button tooltip is updated to match.
Master > Content > Scheduled Tasks - faster forecast and execution for chained ("run after") data transfersThe Scheduled Tasks forecast and the execution of chained data transfers have been optimized. When a Data Transfer is configured to run after another (a follow-on "run after" chain), the system previously re-scanned the entire set of follow-on transfers at every step of the chain, so a site with many chained transfers saw both the Scheduled Tasks forecast and the transfer run slow down disproportionately as the chain grew. The follow-on lookups are now built once and reused, so the forecast calendar and the chained execution both scale smoothly no matter how many follow-on transfers exist. Behavior and results are unchanged - the same transfers run in the same order and the forecast shows the same schedule; only the speed on large chains improves.
AsposeToPdf (Word Conversion - Variable Fields) — PDF now shows typed values instead of placeholdersWhat happened
The PDFs created from Word files were showing placeholder text instead of the real content. For example, a policy's title appeared as Document Title within the PDF, even though the Word document itself showed the title the author had actually typed.

Why it happened
The cause was in how these Word documents are built. Their templates use variable fields for items like the title, keywords, reference number, and dates. A variable field displays a stored value behind the scenes, and when someone types directly over it in Word, only the visible text changes, not the stored value underneath. When the PDF was generated it refreshed those fields and fell back to the stored placeholder (Document Title, Keywords, and so on), so the PDF did not match what the author saw in the Word document.

The fix
The PDF now keeps the values exactly as they appear in the Word document, so the two match.

Preventing it at the template level
These problems can also be prevented by using regular typed text instead of variable fields for values that authors fill in directly (such as the title). Variable fields are best reserved for values that get filled in automatically. When a value is meant to be typed by the author, plain text has no hidden stored value to fall back to, so the PDF always matches what was typed.

Clearing cached PDFs
Generated PDFs are cached on the server to keep the site fast, so a document whose PDF was created before this change keeps showing the old PDF until its cached copy is regenerated. To correct an affected document:
  • Re-save or re-upload the document (this regenerates the PDF automatically), or
  • Delete just that document's cached PDF on the server.


Cached PDFs live under the site's Temp\AsposeToPdf\ folder, in a subfolder path that mirrors the document's Uploads location, named after the source file. For example:
  • Document: /Uploads/Public/Documents/Template/MyPolicy.docx
  • Cached PDF: ...\Temp\AsposeToPdf\Uploads\Public\Documents\Template\MyPolicy.pdf


Only delete the cached PDFs for documents showing the problem. Do not clear the entire Temp\AsposeToPdf folder. The cached files exist to improve performance and will regenerate on next view.
NLS & AI — Page Assistant answers with live charts from curated Data Sources, plus a new AI Data Source TunerTwo related additions bring live, content-grounded charts to the Page Assistant. This first release certifies charts only (Chart.js Data Sources); other output types will be certified one at a time in later releases.

AI Data Source Selection (Charts Only). Under Design > Data Sources, each Data Source now has an Available to Page Assistant option (AvailableToAI), an AI Description, and an optional loading placeholder. When the feature is enabled on a Page Assistant (under NLS & AI > Script Generator, the Enable AI Data Sources option), the assistant matches a visitor's question to the single best-described eligible Data Source and renders its chart inline in the chat bubble, grounded in real content. Selection is prompt- and context-aware and returns at most one source; if nothing is a confident match, no chart is shown (never a low-confidence guess). Each source is executed under the asking user's own security, so a visitor only sees data they are permitted to see, and the selected source's title is shown above the chart for transparency. The feature is off by default and stays inert until an admin turns it on for a specific Page Assistant.

AI Data Source Tuner (new page). A new Console page at NLS & AI > AI Data Source Tuner lets admins test and tune selection before going live. Enter a sample question to see which Data Source is selected and its confidence score, a per-candidate score list against the confidence threshold, and the full catalog of eligible sources plus any excluded sources with the reason they are excluded (for example, an uncertified output type, or a source that depends on page context). Admins tune each source's AI Description until the assistant reliably picks the right one.
API - resolved a high-severity OpenAPI dependency advisory (security + dependency maintenance)This is a security and dependency maintenance release with no client-facing UI changes. This sync itself makes NO web.config changes (see the follow-up patch below for those).
  • Resolved a high-severity security advisory (GHSA-v5pm-xwqc-g5wc) in the API's OpenAPI documentation dependency by pinning the transitive Microsoft.OpenApi library to a patched version. This clears a build/security warning and does not change any API behavior or output.
  • Brought several third-party libraries current to their latest patched versions (including Newtonsoft.Json) with no functional or visual change.
  • Added internal deployment-engine support for applying web.config binding redirects as part of a patch. This is infrastructure only - it enables the follow-up update below to be delivered safely and has no effect on this release's behavior.


Delivered separately in a follow-up patch (NOT in this sync):
The larger .NET Framework library updates that require web.config binding-redirect changes are deferred to a coordinated patch, so the updated libraries and their matching redirects land together atomically. That patch updates these runtime libraries to current versions, with no intended behavior change:
  • Dapper (data access) - and Microsoft.Bcl.AsyncInterfaces, which it requires
  • System.IdentityModel.Tokens.Jwt (JWT token handling) - and its System.Memory support libraries
  • Humanizer (text formatting)
  • Microsoft.Extensions.DependencyInjection
  • System.Security.Cryptography.ProtectedData

The patch is built and deployed after this sync ships, only to servers already updated to this version. Tracked separately; watch for it as a follow-up.

WARNING - the follow-up patch modifies web.config (binding redirects). Clients with custom code or virtual directories must read this.
The patch adds/updates these runtime > assemblyBinding binding redirects in each site's web.config:
  • Microsoft.Bcl.AsyncInterfaces -> 10.0.0.9
  • System.Memory -> 4.0.5.0, System.Buffers -> 4.0.5.0, System.Numerics.Vectors -> 4.1.6.0
  • Humanizer -> 3.0.0.0
  • Microsoft.Extensions.DependencyInjection and .Abstractions -> 10.0.0.9

The patch updates the web.config of the main site (Root) and Console only. It does NOT touch a web.config that is part of a separate application - so a site with a virtual directory running as its own IIS application, or client custom code with its own configuration, must add these same binding redirects to that web.config by hand. Without them, custom code (or the sub-application) that loads the updated libraries can fail with a "could not load file or assembly" error. If a client has custom code that references any of the libraries above at an older version, confirm it still loads after the patch.

Word Add-In: Save no longer reports success on an expired session; clearer re-sign-in and sign-in resilience
  • No false "Save successful." Previously, if the sign-in session had expired, clicking Save could still show a success message even though the document was not actually saved. The add-in now detects the expired session, does not report a false success, and prompts the user to sign in again before saving.
  • Clearer messaging. When a lapsed session is detected, the add-in shows a plain "your session has expired, please sign in again" message instead of a confusing error or an add-in that appears stuck.
  • Sign-in resilience behind single sign-on (SSO). The add-in recovers more gracefully from an expired session: it retries a failed load and, if needed, clears a stale sign-in so the next attempt starts clean (similar to the manual "Reset Add-in" step users rely on today). The sign-in dialog also retries once if the login redirect does not complete on the first attempt.
  • First-attempt sign-in. A new SSO sign-in entry point helps sign-in complete on the first try for SSO-configured sites, instead of landing on the site home page.
Resource.ashx links: download=1 forces a file to downloadResource links (Resource.ashx) now accept an optional download=1 query parameter that forces the file to download rather than render in the browser. Previously, common file types that browsers display inline - text files, PDFs, images, audio, and video - always opened in the browser tab, with no per-link way to make them download. Adding &download=1 to a resource link now delivers the file as a download for that single request, and the saved file keeps its proper name (e.g. appendix.txt instead of Resource.txt). This is especially helpful for large text files, which could bog down or crash the browser tab when opened inline. The option can only ever force a download; it can never make a file open inline, so it introduces no security change.


Learning Record Store (LRS) — xAPI statement POST now accepts array submissions so SCORM/xAPI course completions record The Learning Record Store service (lrs.svc) that receives xAPI statements from SCORM/xAPI courses now accepts statement submissions sent as an array, not only as a single statement. Standard xAPI course players (the TinCan/SCORM driver) send even one completion as a one-item array, which the service previously rejected, so no completion records were being stored. The service now handles both a single statement and an array of statements, stores each, and returns the corresponding statement identifiers. Separately, a read-back of activity state when none is stored now returns an empty No Content response instead of an empty JSON list, which stops a JavaScript error in the course player when resuming an attempt. Note: full resume/bookmarking support (storing and returning xAPI state documents) is a separate planned enhancement and is not part of this change.
Site Maintenance: SSO login, site search, module downloads, file-cleanup security, and API healthThis maintenance release includes fixes and hardening across sign-in, search, module downloads, the Console, data transfer, and API reliability.
  • SSO / SAML login: users whose identity provider sends a role that does not map to any Centralpoint role can now sign in; this previously failed during login.
  • Site search: very long search queries no longer produce an error (an internal capacity-calculation issue).
  • Module results download: downloading a result set whose columns appear before the record identifier now completes instead of failing.
  • Console custom attributes: a malformed or empty custom-attributes file no longer causes a module's Console page to error; it falls back to the base attributes.
  • Data transfer: a supplied batch id and auto-number are now saved with a document upsert (they were previously dropped).
  • Scheduled tasks: a transient configuration-service error during a scheduled run no longer aborts the run; it falls back to the site's local configuration.
  • Update install: an incomplete update package now reports a clear, actionable message instead of a generic "path not found."
  • Security, file cleanup (Development > Utilities): the upload-cleanup tool now rejects any entry that resolves outside the site's uploads directory, preventing directory traversal.
  • API reliability: the API application folder's read permission for its application-pool identity is now set explicitly and re-applied during scheduled maintenance, preventing and self-healing the IIS 500.19 "cannot read configuration" class of API outages without a manual server fix.


Developer note (custom code): IsInArray(value, array, ignoreCase) now honors the ignoreCase argument. Previously the three-argument form always compared case-insensitively regardless of the flag. Custom code that passed ignoreCase: false and relied on the old behavior will now get case-sensitive matching; the no-argument form stays case-insensitive, so role, audience, and id membership checks are unaffected.
Data Transform - import field map lists each option on its own line; Attribute Switch types sorted by codeOn a Data Transform record's field-mapping screen, the properties table under each destination field previously showed option lists as a single comma-joined line that was very hard to read. Now:
  • List Items rows (options defined on the destination attribute) render one option per line. For Attribute Switch attributes, such as the Data Cleaning Type on the HtmlCleaner module, options are sorted by their code and shown as Label = code with the fields each option reveals de-emphasized in gray, e.g. HTML Cleaner = 01 (cfrSearchFor, ...) through SQL Query = 07.
  • Top 10 Items rows (options loaded from data, such as modules, audiences, taxonomy, and yes/no lists) also render one per line, with the more… link on its own line.
  • The more… marker now appears only when more options than the ones shown actually exist.
  • Option labels are HTML-encoded before display.
Admin > Properties — new Resource Allow Any File Extension option for Resource uploads A new site property, Resource Allow Any File Extension (AllowAnyFileExtension), has been added under Admin > Properties, default Disabled. When enabled, authenticated users can upload files with any extension — including files with no extension — through the Resource upload window used by form resource fields. The upload window's hint changes to "All file types are accepted." Anonymous users remain restricted to the standard allowed-types list regardless of the setting. Uploaded resources are stored outside the web root and are always delivered as downloads, never executed. Other upload areas (Documents, Bulk Upload, File Manager) keep their existing restrictions. Additionally, the resource replace window now validates file extensions under the same rules (previously it accepted any file type regardless of the allowed list).

Centralpoint Update 8.12.9
Monday, June 22, 2026
FeatureSummary
Master > Admin > Properties - configurable retention windows for webhook request and data trigger logsWebhook processing has been hardened and three log-retention windows are now configurable under Master > Admin > Properties.
  • The scheduled webhook processor no longer slows down or times out on sites with a large webhook request history. Its lookup now scales with the number of pending webhooks instead of the size of the entire request log.
  • A new Webhook Request Retention property controls how many days webhook request and response log rows are kept (default 90). The most recent request per webhook is always retained, so the webhook Deliveries view still shows the latest delivery. Set it to 0 to remove all older rows on each clean up, or -1 to disable retention and keep full history.
  • Two data-trigger retention windows that were previously fixed in code are now visible and adjustable here too: Data Trigger Retention (completed, error, cancelled, aborted rows, default 30) and Data Trigger False Condition Retention (false and invalid-condition rows, default 7). Same convention: 0 deletes all on each clean up, -1 disables.


Retention is enforced by the existing Clean Up utility, so nothing is removed until the next clean up runs. On update, a supporting database index is added automatically to speed the webhook lookup.
FormTaxonomy / TaxonomySearch CpScripts - Data Filter category counts now stay fast on large modulesThe FormTaxonomy and TaxonomySearch CpScripts (Script Builder tools) can be given a Data Filter of cpsys_CurrentModule (or a module system name), which limits the taxonomy list to categories that actually contain content and shows a document count beside each one. That count and the empty-category hiding are now calculated with a single set-based query, instead of scanning the module's content once for every category. The behavior is identical - the same categories, the same counts, the same hidden empty categories - but it now renders quickly no matter how many categories or documents the module holds.

Previously, on large repositories (tens of thousands of documents across many categories) the Data Filter could take tens of seconds or time out while it counted each category individually. It now returns in well under a second - validated against a 3.4 million row module, where the full calculation completed in about 1.9 seconds.

This affects any page using the FormTaxonomy or TaxonomySearch CpScript with a Data Filter pointed at a module. No configuration or content changes are needed - existing pages get the improvement automatically.
Broadcasts > Reporting - email broadcasts now relay directly to the configured mail server (fixes sending on newer Windows Servers) Email Broadcasts now send directly through the mail server configured in Admin > Settings (Email Server) when a real mail server is specified, instead of relying on the local Windows IIS SMTP pickup service. This restores broadcast delivery on newer Windows Server versions (2022/2025), where the legacy IIS SMTP feature is no longer available and broadcasts were failing to send with a "pickup directory" error.
  • Installs with a configured mail server (not blank or localhost) now relay directly, using the server's port, SSL, and any credentials set in Admin > Settings.
  • Installs with the Email Server left blank or set to localhost continue to use the previous local pickup behavior.
  • Sites already using the Data Broadcast module's custom SMTP option are unaffected.
Word Viewer: Floating Shapes SupportThe Word Viewer now correctly positions floating shapes, text boxes, and anchored images. Documents containing these elements are rendered with a fixed-layout method that preserves each element's exact position on the page; previously they could reflow out of place. Documents without floating shapes continue to use the standard responsive rendering and are unaffected.

Note on these documents: because fixed-layout pages keep their exact dimensions, they are not responsive. Very wide pages on small screens may require horizontal scrolling.

Clearing the cached file for a problem document

The viewer saves each converted document as an HTML file under the site''s Temp\AsposeWordViewer folder so it does not re-render on every view. If a specific document renders incorrectly and needs to be regenerated (for example, after the source document is corrected), delete only that document''s cached file.

Cache location: [site]\Temp\AsposeWordViewer\[document folders]\[filename].html
  • A document at /Uploads/Policies/charter.docx is cached at ...\Temp\AsposeWordViewer\Uploads\Policies\charter.html
  • Resource-based documents are cached at ...\Temp\AsposeWordViewer\Resources\[resourceId].html


Steps:

1. Locate the .html file that matches the problem document under Temp\AsposeWordViewer.
2. Delete that single file.
3. Reopen the document in the viewer; it regenerates automatically on the next view.

Important: delete only the specific problem document''s cached file. Do not clear the entire AsposeWordViewer folder. Every viewed document is cached there for performance, and removing all of them forces every document to re-render.
Word Viewer: Wide Document SupportThe Word Viewer now expands to fit documents whose content is wider than the viewing area, such as landscape pages and wide multi-column tables, avoiding horizontal scrolling where possible. No configuration or file changes are required. Fit still depends on screen size, so very wide document pages on small screens may still scroll horizontally.
Module Properties > Visio Structured ExtractionThis feature extracts the workflow structure from a Visio diagram when a record is saved. For example, the steps, decisions, swimlanes, and connections in a .vsdx file stored in a source attribute can be saved to a designated destination attribute as formatted text or JSON. The module property is available in all GenericEnhanced modules. See the help file for configuration assistance and functional specs.
Development > Process Monitor - redesigned with live status, step timelines, and abort (both Master and Administrative Console)The Process Monitor has been rebuilt as a modern, single-page view of all background processes - both currently running and completed - replacing the old auto-refreshing grid. It is now available on both the Master (Master > Development > Process Monitor) and the client site's Console (Development > Process Monitor), served from one shared component.
  • A summary strip shows counts by status: Running, Stale, Succeeded, Failed, and Orphaned.
  • Each row shows the process type, site, user, relative start time, and duration. Running processes update live and their elapsed time ticks up.
  • Status is determined automatically: a process actively reporting progress reads Running; one that has gone quiet recently reads Stale (it may still be running); one silent past the cutoff reads Orphaned (started but never reported finishing); completed ones read Succeeded or Failed.
  • Clicking a row expands a step-by-step timeline of the process, with timing between steps and any reported errors. Simple formatting within step messages now renders correctly.
  • Running processes that support it can be aborted from a confirmation dialog (administrators only).
  • The list auto-refreshes (slowing automatically when nothing is running) and can be filtered by status tab, searched by type/user/site, and narrowed by process type.
  • A built-in How this works panel explains each status, including the difference between Stale and Orphaned.
  • On the client site Console the view is scoped to that site's processes; on the Master it shows all sites.


Centralpoint Update 8.12.8
Monday, June 8, 2026
FeatureSummary
Module Views > Natural Language Search > Contextual SearchWhen a module view is bound to a Centralpoint type (Contextual Search) Natural Language Search configuration, Order By clauses are now supported. Order By was previously ignored on this path because the initial NLS implementation was built around document storage providers (non-SQL), which had no way to apply a SQL sort. Results now follow the view's configured Order By, while search relevance still determines which records match. This update applies automatically and requires no console configuration changes.
Module Views > Events > Details Email > Allow Multiple Recipients Added the Allow Multiple Recipients attribute to the Events module Details Email configuration. When enabled, users can enter multiple comma or semicolon-separated email addresses in the Email a Friend form on event details pages. Recipients are automatically deduplicated before sending. The confirmation message displays the recipient count when sending to multiple addresses. This extends the existing multiple recipients feature (already available in Generic Enhanced modules) to the Events module type.
Forms > CpScript > SolenisSsoProvisioning A new SolenisSsoProvisioning CpScript has been added for provisioning users in Solenis Azure AD B2C during form submission. The script uses OAuth 2.0 client-credentials flow for
server-to-server authentication. When added to a form, it provisions the user in B2C before the form submits. If provisioning fails, the form submission is blocked and an error is displayed. Duplicate users
(409 Conflict) are treated as success. Access tokens are cached for ~55 minutes to reduce API calls.

CpScript Attributes:
- emailField - Form field ID for email (required)
- firstNameField - Form field ID for first name (required)
- lastNameField - Form field ID for last name (required)
- languageField - Form field ID for language (optional, supports: en, de, fr, hu)
- defaultValue - Custom error message on failure (optional)

Configuration: Requires Solenis.SSO.ClientId, Solenis.SSO.ClientSecret (encrypted), Solenis.SSO.Scope, Solenis.SSO.TenantId, and Solenis.SSO.ProfileEndpoint in web.config appSettings.

Additionally, a Centralpoint Encryption utility has been added to Console > Utilities for encrypting/decrypting values using the site's encryption key (useful for encrypting client secrets for web.config).
AI Indexing > Automatic re-indexing on content changesVector indexing for AI search and retrieval now updates automatically as content changes, instead of the background service repeatedly scanning every enrolled module on a fixed interval. When a record in an enrolled module is added, edited, or deleted, it is queued and re-embedded on the next background cycle - interactive saves are prioritized and are typically reflected within about a minute, while bulk imports are processed in the background at a steady pace. Modules with no recent changes now incur almost no ongoing database work, which is a significant performance improvement on large content sets. Enrolling a module automatically queues all of its existing records for indexing, and unenrolling clears any pending work for that module. A periodic safety sweep reconciles anything the automatic path may have missed (for example, records changed by an outside process), so the index stays complete. Content saving is never blocked by indexing - if indexing is temporarily unavailable, saves still complete normally.
AI Providers > Model CatalogThe AI Providers page now presents each provider's available models as richer cards. Every model card shows the model's vendor and license, and models that have been superseded by a newer release are marked with a Legacy badge, de-emphasized, and sorted to the bottom of the list so current models surface first.
  • Local (on-prem) models: the CPU model catalog has been expanded with additional options, and the default local model for new installations is now qwen3-4b - a stronger choice for grounded chat and summarization than the previous default. Existing sites keep their currently configured model.
  • OpenAI models: the catalog has been refreshed to match OpenAI's current lineup. The latest GPT-5 family models were added, several older models are now flagged Legacy, and the deprecated dated GPT-5 snapshots display a notice that API access ends December 10, 2026 along with the recommended replacement model. The default OpenAI model for new installations is now gpt-5-chat-latest. Existing sites are unaffected.

Data Transfer > FileDownload Script > Save As ResourceThe FileDownload CpScript now supports storing downloaded files as Centralpoint Resources instead of writing them to disk. A new SaveAsResource toggle has been added to the script configuration. When enabled, downloaded files are saved to the Resources directory and registered in cpsys_Resources, served through Resource.ashx with Audience/Role permissions. Optional ResourceAudiences and ResourceRoles parameters allow specifying permission assignments (defaults to All Audiences and Everyone role). Re-imports automatically update existing Resources instead of creating duplicates by tracking an internal integration identifier. The script returns a Resource.ashx URL instead of a disk path when this mode is enabled.

Manifests > Increment Version on SaveA new Increment Version on Save attribute has been added to the Word Add-In Settings module. When set to Yes, the manifest version is automatically incremented (e.g., 1.0.0.5 → 1.0.0.6) during save. This is required when updating a deployed add-in via Microsoft 365 Admin Center, which rejects manifest uploads unless the version number is higher. The attribute automatically resets to No after save. Additionally, manifest versions are now normalized to 4 segments per Microsoft requirements (e.g., 1.0.0 becomes 1.0.0.0).

Data Transfer > Taxonomy Script > SetParents with GenerateThe setparents='true' parameter now works correctly when using action='generate' in the Taxonomy CpScript. Previously, when generating taxonomy nodes from folder paths (e.g., SharePoint imports), only the leaf node was tagged on records even when setparents='true' was specified. Now all parent taxonomy nodes are included in the tagging, matching the expected behavior of the non-generate path.

Centralpoint Update 8.12.7
Tuesday, May 26, 2026
FeatureSummary
Module Designer > Proximity Search > Multi-Location Records Fixed proximity search filtering for modules configured with multiple GeoCode fields (e.g., Physician Directory with 4 office locations). Previously, records with multiple locations were
incorrectly filtered using only the primary location's distance for all WHERE clause conditions. Now each location is correctly evaluated against its own calculated distance. Behavioral change:
Modules using ResultsProximityFieldCount > 1 will now return different results — records previously excluded because their primary location was outside the search radius will now appear if any
secondary location is within range.
CAD Files ViewerPreviously, a CAD drawing that couldn't be shown rendered as a blank screen with no explanation. The viewer now detects the drawing's status and shows a brief message explaining why: it's still processing, it couldn't be loaded right now, or the source file failed to convert. Every message includes a Copy link button so a visitor can forward the page to their website administrator, and the conversion-failure message adds an administrator note with the underlying error and steps to re-publish the file. This behavior applies automatically and requires no configuration or setup changes.
Module Details > Email a Friend > Multiple RecipientsThe Email a Friend feature on module details views now supports sending to multiple recipients in a single submission. A new AllowMultipleRecipients attribute has been added to the Generic Enhanced module under the Details Email tab. When enabled, the recipient field label updates to "Recipient Email(s)" with a hint to separate addresses with commas. Users can enter multiple email addresses separated by commas or semicolons, and all recipients receive the email in one send. Duplicate addresses are automatically removed, and the confirmation message displays the count of recipients when more than one address is entered.
Design > Script Generator > Page Assistant > Use Knowledge Base (RAG)In the Design > Script Generator module, records whose Script attribute is set to Page Assistant gain AI knowledge-base (vector search) grounding, driven by a new Use Knowledge Base (RAG) attribute. When enabled, the Page Assistant can answer end-user questions using AI-indexed module records - the "knowledge base" - in addition to the content of the current page, bringing the same meaning-based search that powers the Knowledge Assistant to the public-facing Page Assistant.

The new attributes appear on a Page Assistant script when Show Chat is enabled:
  • Use Knowledge Base (RAG) - off by default; turn on to let the assistant search AI-indexed module records. Turning it on reveals the options below.
  • Use Page Content - on by default; keep the current page as the primary source, or turn it off to make the assistant answer purely from the knowledge base (an on-page Knowledge Assistant).
  • Knowledge Base Modules - choose which AI-indexed modules to search, or leave it on All Vector Modules. The list shows one entry per module using its display alias.
  • Knowledge Base Results (Top N) and Knowledge Base Similarity Threshold - tune how many records are retrieved and how closely they must match.
  • Show References - show or hide the list of source records used in an answer.
  • References Template (Template mode only) - customize how each reference renders.


When the knowledge base is on, the assistant answers from the page first and supplements with indexed records only when the page falls short, citing the records it used. A References list appears beneath each reply; when the site's public URL is configured, each reference links to the source record's page. Retrieval respects all standard content security - a visitor only sees records permitted by their audience, roles, publish dates, and enabled status. The assistant also remembers the conversation per page: returning to the page reloads the prior chat and its references, and long conversations stay responsive because older turns drop out of the AI's working context while the full history is retained.

Only modules enrolled in AI Vector Indexing (Development > AI Indexing) are searchable.
Console > Data Transfer > Field Map Scripting > OcrZone (OCR)OCR text extraction is now available in Data Transfer through a new OcrZone CpScript. Added to a field map, it reads the text from a scanned image and writes it to the destination column, turning scanned documents into structured, searchable content instead of flat image files. This feature supports extracting the whole page or just a fixed area of it, such as an invoice number or a date that always sits in the same spot on a form. Recognition runs entirely on a local engine, so no image data leaves the server, and common formats are supported including PNG, JPG, BMP, GIF, and single- or multi-page TIFF. Optional settings are available to clean up, format, and validate each value before it is saved. Full setup details are in the Script Builder help for OcrZone.
Data Transfer > Clicks DestinationThe data transfer that imports activity into the legacy Clicks area has been hardened so that it can no longer stall and hold database locks that make the rest of the site unresponsive. Each batch is now written through a safe staging step and committed as a single unit, so the Clicks and Clicks Log records always land together. A time limit on database waits ensures a blocked write fails quickly instead of waiting indefinitely. Behavior is otherwise unchanged: the same records are imported, and if a batch fails it is logged and the transfer continues.
Master > Process MonitorThe live Process Monitor now shows each running process's Id as the first column, rendered as a link. Clicking the Id opens that process directly in the Process Log, where its full step-by-step history is shown. Previously there was no way to jump from a running process to its log entry. The Process Log search now also includes a Process Id field, so a specific process can be looked up by its Id.
File Upload > Supported ExtensionsAdded support for .upg and .cli file extensions to the allowed upload list. These extensions are used by Ericsson network equipment for firmware upgrade packages (.upg) and CLI configuration scripts (.cli). Both extensions are restricted to authenticated users only and are not available for anonymous uploads.
Console > CMS > IAM Connector > OIDC B2C PKCE Authentication A new OIDC B2C authentication option has been added to the IAM Connector module for Azure AD B2C single sign-on. This enables PKCE (Proof Key for Code Exchange) authentication flow, which is
more secure for browser-based logins and does not require a client secret. When enabled, the module generates a login button using the OidcB2CLoginButton CpScript. The authentication flow supports:
- PKCE code challenge/verifier for secure token exchange
- B2C custom extension attributes (e.g., extension_email)
- Proper B2C session logout via the IdP logout endpoint
- Username fallback chain: email → display name → first/last name → subject ID
- Force fresh login with prompt=login to prevent stale session issues

Configure the B2C settings under the Solenis B2C section in the IAM Connector record, including Client ID, Authorize URL, Token URL, and Logout URL.
Data Cleaner > Rule Priority OrderingThe Priority attribute is now visible on Keyword Generator, Taxonomy Generator, and Attribute Generator rules in the Data Cleaner module. It was previously available only on HTML Cleaner, Attribute HTML Cleaner, Data Triage, and SQL Query.

Rules within each of these three types now execute in ascending Priority order, with Title as the tiebreaker. Important: Priority orders rules within their type. All Keyword Generator rules execute in priority order, then all Taxonomy Generator rules, then Attribute Generator rules. Priority does not interleave across rule types.

New help text on the Priority field describes this ordering contract directly in the form, so admins setting priorities see the rules of the road inline.

This is useful for tiered/multi-pass classification scenarios. For example, with Taxonomy Generator set to single-select, a low-priority rule can serve as a specific match (e.g. "kidney transplant" -> Nephrology / Transplant) and a higher-priority rule can serve as a broader fallback (e.g. "kidney" -> Nephrology / General). The most specific match wins because it fires first.
Master > Utilities > Database Maintenance on Selected Site(s)Database Maintenance has been improved for both the manual Database Maintenance on Selected Site(s) task in Master > Utilities and the automatic maintenance that runs on a schedule. Two issues from the previous release were addressed:
  • Large transaction log files that previously stayed oversized are now reduced. The routine makes several passes so that even multi-gigabyte logs are brought down toward 1 GB.
  • Error notifications are no longer raised for logs that have already shrunk to their healthy minimum. Previously a notification was sent whenever a log settled slightly above 1 GB even though shrinking had succeeded. A notification is now only sent when a log genuinely remains oversized after maintenance completes.


Sites running full recovery with recent log backups continue to be left untouched so externally managed backup chains are preserved.

Centralpoint Update 8.12.6
Monday, May 11, 2026
FeatureSummary
NLS & AI > Knowledge AssistantA new Knowledge Assistant module is now available under NLS & AI. This is the first release of the feature and ships in beta - the page carries a Beta pill, and behavior will continue to refine as it matures.

Requirement: SQL Server 2022 or later. Knowledge Assistant uses vector indexing, which depends on clustered columnstore features introduced in SQL 2022. On pre-2022 SQL Server, the page renders a capability banner and disables AI Indexing, the Search tab, and the Chat tab rather than failing at runtime.

Knowledge Assistant lets users ask natural-language questions about indexed module data and returns two complementary views:
  • Search - a hero question box returns ranked record cards with similarity scores, a threshold slider, a sort dropdown, and a per-result "Why this match?" disclosure that reveals the exact text the AI matched on. Results can be summarized into a single AI-generated digest or exported to JSON or CSV.
  • Chat - a streaming conversational view that answers questions with citations to the underlying records. Each reply shows source-reference cards linking directly to the Console record. The history sidebar resumes prior conversations with citations intact.


A Settings tab shows the active audience scope and lets administrators choose which modules the Knowledge Assistant can search. Audience and module-access filtering are enforced server-side from the signed-in user's permissions - users cannot reach data they would not see through normal navigation.

Knowledge Assistant requires that at least one module be enrolled and indexed via NLS & AI > AI Indexing first; the empty state on the Knowledge Assistant page links to AI Indexing when no modules are available.

A small companion change: a new optional KnowledgeAssistantProperties block under NLS & AI > AI Properties lets administrators override the chat provider, model, temperature, system prompt, default similarity threshold, and default result count for the Knowledge Assistant only - leaving the site-wide AI Configuration untouched. Empty fields fall back to AI Configuration defaults.
Data Transfer > SharePoint List AttachmentsCentralpoint can now import file attachments from SharePoint list items alongside the row data. Attachments are linked to their parent record and kept in sync automatically as items change in SharePoint. Refer to the SharePoint List Attachments documentation for configuration and setup guidance.

Centralpoint Update 8.12.5
Monday, April 27, 2026
FeatureSummary
Admin > Properties > File Explorer Allow Destructive ActionsA new setting gates destructive file operations (delete, rename, drag-move) in the File Manager module and File Explorer upload dialog. When enabled, only Admins and ancestor admins can perform these actions. This is disabled by default to avoid accidental loss of files.
Word Add-In > Save Button Mode A new Save Button Mode attribute has been added to the Word Add-In Settings module. This setting
controls when the Save to Centralpoint button is available in the Word ribbon:
- Always (default): Save button is always available for all documents
- Centralpoint Documents Only: Save is only available when the document originated from Centralpoint (has
cpsys_DataId property). Non-Centralpoint documents show a disabled button with an explanatory message
- Disabled: Save button is always disabled with a message that the administrator has disabled this feature
Module Properties > Resource Content AttributesThis feature has been extended to extract text from Visio files (.vsd, .vsdx, .vsdm, .vss, .vssx, .vssm, .vst, .vstx, .vstm, .vdx, .vsx, .vtx). No configuration changes are required; the supported file list updates automatically.
Enable Read Committed SnapshotA new sync method has been added that enables row-versioning for database reads on the Master database and on every website database. After this sync runs, readers no longer block writers and writers no longer block readers when accessing the same tables. This eliminates the timeouts, stalled queries, and deadlocks that could occur during bulk imports, large data transfers, and other long-running write operations. The change is applied automatically during the sync, persists across server restarts, and requires no application-side changes.
NLS & AI > AI IndexingA new AI Indexing page has been added to the Console for managing vector index enrollment, monitoring indexing health, and configuring source tables. The page is organized into three tabs: Indexing Health & Modules, Available Modules, and Source Tables. Each tab includes a "How this works" expandable section explaining what the area does.

The Indexing Health tab shows a live progress panel for all enrolled modules and a table with per-module controls: edit configuration, force reindex, inspect a record's index state, view generated chunks, pause/resume, and unenroll. The Available Modules tab lists modules eligible for vector enrollment that have not been enrolled yet, with a search filter and one-click enrollment. The Source Tables tab is read-only for this release and shows the Module Records source (cpsys_DataCurrent) plus a placeholder for future custom source registration.

When a site is running SQL Server older than 2022, vector indexing features automatically disable with an explanatory banner. Generative AI features remain fully functional.

Important: This is for future use and is not consumed by any other UI surface yet. The page establishes the canonical management interface for vector indexing so that upcoming features can rely on a single place to enroll modules and tune indexing behavior. Enrolling modules now will produce embeddings in the background, but no end-user feature reads those embeddings today.


Centralpoint Update 8.12.4
Monday, April 13, 2026
FeatureSummary
NLS & AI > AI Providers > Embedding ProvidersThe AI Providers page has been enhanced with dual-track provider management. Generative (chat, summarization, record generation) and Embedding (vector-producing models for future Vector Search and RAG retrieval) are now separate, independent tracks. A site can run one provider for chat and a different one for embeddings at the same time.

Two summary chips at the top of the page display each track's current provider and model at a glance: Generative Default (blue) and Embedding Default (green).

The models list is split into two sections:
  • Generative Models — LLamaSharp and OpenAI chat and summarization models, each with a "Set as Generative Default" action.
  • Embedding Models — new section for vector-producing models with their dimensions shown as badges (384d, 768d, 1536d) and a "Set as Embedding Default" action. Available models include all-MiniLM-L6-v2 (ONNX, fast local), nomic-embed-text (LLamaSharp, higher quality local), and text-embedding-3-small (OpenAI, cloud-based, requires API key).


A live Embedding Index Status panel appears below the default chips when any module is being indexed. It shows real-time progress with a green spinner, aggregate percentage, and per-module progress bars. The panel updates every few seconds without requiring a page reload.

Changing the embedding default triggers an automatic re-embedding of every enrolled module. The confirmation dialog warns that re-embedding can take hours or days on production sites and displays an estimated duration based on record count and chosen provider. Once confirmed, a processing overlay keeps the admin informed during the scrub, then the Embedding Index Status panel takes over to show live progress.

Module names shown throughout the panel now honor site aliases and navigation labels — admins see the name they set (for example, "Knowledge Base") rather than the system name (like "GenericEnhancedM").

Note: Embedding providers are configured now in preparation for future Vector Search and Knowledge Assistant features, which will query indexed content using semantic similarity rather than keyword matching. Setting the embedding default today populates the index that those future features will use.
Console > CAD Files > FilesCAD Files — Autodesk Integration Update

The CAD Files module has been updated to use Autodesk's current upload workflow. Autodesk retired their legacy upload endpoint, which was causing new CAD file uploads to fail. This update keeps processing working going forward — no action is required for normal day-to-day use.

New record attribute: "Regenerate CAD Base 64"

Each CAD Files record now has a "Regenerate CAD Base 64" attribute (Yes/No, defaults to No). It is only needed after your Autodesk API credentials (Client ID or Client Secret) are rotated in the CAD Files module properties.

Why this matters: when Autodesk credentials change, previously uploaded files remain tied to the old credentials at Autodesk and can no longer be displayed in the viewer. Affected records will fail to render or show an authentication error.

To recover a record after a credential change:

1. Edit the CAD Files record
2. Set "Regenerate CAD Base 64" to Yes
3. Save

The record will be re-uploaded and re-translated under the new credentials, and the attribute resets itself to No automatically. Applies only to 3D files; 2D files (.gp4, .dwg) are unaffected.
Console > Data Transfer > Script Builder > FileDownloadThe FileDownload script in Data Transfer now supports filename replacement options. Four new Script Builder parameters have been added:
  • Prefix - Text to prepend to filenames (for uniqueness across modules)
  • Replace Text - Text or regex pattern to find in the filename
  • Replace With - Replacement text (leave empty to remove matches)
  • Replace Text: Regex Enabled - Enable regular expression matching


Security hardening: ReplaceWith values containing path separators (/, \, ..) are rejected to prevent path traversal. Filenames are sanitized before and after replacement using Path.GetInvalidFileNameChars(). Regex patterns are compiled once with RegexOptions.Compiled and a 250ms timeout to prevent ReDoS attacks. Invalid regex patterns and timeouts are caught and reported via DataTransfer.Status.

The replacement logic is also applied in the Content-Disposition retry path for consistency when the primary download fails.
Console > Data Transfer > Taxonomy Script > Trim Path A new Trim Path option has been added to the Data Transfer Taxonomy script when using the
Generate action. When enabled, leading and trailing delimiters are automatically removed from taxonomy paths
before processing. This is useful when importing taxonomy hierarchies from external sources like SharePoint where
paths may start or end with the delimiter character (e.g., /Zoo Trust/Surrogate Trustees/). The option appears
in the Script Builder when selecting the Taxonomy script with Action set to Generate. The existing behavior is
preserved when Trim Path is disabled (the default).

Centralpoint Update 8.12.3
Tuesday, March 31, 2026
FeatureSummary
Module Properties > Resource Content AttributesThis feature has been extended to extract text from .htm and .html files. No configuration changes are required; the supported file list updates automatically.
Master > Scheduled Tasks > Archive DataAdded support for moving files from archived records to configurable destination directories and sending email notifications on errors.
Data Transfer > Source > SharePoint List (Graph API)New data transfer source that allows importing data from SharePoint Online lists directly into Centralpoint. Users select a Microsoft authorization, enter their SharePoint site URL and list name, and the system automatically discovers available columns for field mapping. Supports paginated reading of large lists.
Module Designer > CpScripts > WordAddInDownload > Document Locking Changes Made: The WordAddInDownload CpScript now supports document locking, matching the functionality previously available only in PolicyWordAddInDownload. When Lock Document is set to Yes in the Script Builder, downloading a document will lock it to the current user. Other users will see a customizable locked message instead of the download link. When the lock holder saves the document via the Word Add-In, the lock is automatically cleared (unless the module property RemoteUpdateConflictPrevention is set to 1). Additionally, if the module property PreventDownloadifLocked is set to 1, locked documents will return a 404 instead of showing the download link. To use this feature, modules must have three attributes configured: IsLocked, LockedUser, and LockBy. XML examples are provided in the Word Add-In helpfile.
Module Designer > CpScripts > WordAddInDownload > Document Locking Changes Made: The WordAddInDownload CpScript now supports document locking, matching the functionality previously available only in PolicyWordAddInDownload. When Lock Document is set to Yes in the Script Builder, downloading a document will lock it to the current user. Other users will see a customizable locked message instead of the download link. When the lock holder saves the document via the Word Add-In, the lock is automatically cleared (unless the module property RemoteUpdateConflictPrevention is set to 1). Additionally, if the module property PreventDownloadifLocked is set to 1, locked documents will return a 404 instead of showing the download link. To use this feature, modules must have three attributes configured: IsLocked, LockedUser, and LockBy. XML examples are provided in the Word Add-In helpfile.
System Pages > Search > Search Order By Text > CreateDate OptionsTwo new text fields - Search Order By CreateDate ASC Text and Search Order By CreateDate DESC Text - allow admins to add CreateDate sorting options to the search results dropdown. Leave the fields empty to hide the options. When populated, the configured text appears for the selectable CreateDate options alongside the existing sort options.
Module Results Views: CpControl OrderByThe OrderBy cp:control now supports sorting module results by CreateDate. To enable, add CreateDateAsc and/or CreateDateDesc to the options='' property. Label text can be customized via the CreateDateAscText and CreateDateDescText properties in the script builder. Both values are also available in the defaultOrder='' property.
Master > Admin > Scheduled Tasks > SFTP SourceNew SFTP Source scheduled task for downloading files from remote SFTP servers

Centralpoint Update 8.12.2
Monday, March 16, 2026
FeatureSummary
FormUpload CpScriptFormUpload now supports a bulk upload mode. When isBulkUpload is set to true, the upload button opens a popup window where users can select multiple files. On submit, all uploaded files are compressed into a single .zip file and the path is stored in the form field.
Script Generator > Script > Share Module SearchThis feature extends the ShareModuleSearchButton CpScript. It allows console admins to create a custom version of the share button that can process data to a module when clicked.
Security > API Information Disclosure HardeningThe window.cpsys JavaScript object rendered on every page has been hardened to prevent information disclosure on public-facing pages. Previously, all pages - including anonymous/public pages - received the full API endpoint map, a JWT bearer token, and user metadata (name, email, user ID) in the page source. A third-party security scanner flagged this as an API blueprint leak on a client site.

Changes:
  • The API endpoint map (window.cpsys.Api.Endpoints) and user metadata (window.cpsys.User) are now only rendered for authenticated users. Anonymous/public pages no longer expose this information.
  • The JWT bearer token is now delivered via an HttpOnly session cookie (cp-api-session) instead of being embedded in the page source. The token is invisible to JavaScript, page source viewing, and security scanners.
  • The API middleware now accepts authentication from either the Authorization: Bearer header or the cp-api-session HttpOnly cookie.
  • All platform JavaScript (AI Page Assistant, AI Summarization, CpApiManager, Uber error handling) has been updated with hardcoded endpoint path fallbacks so they continue to work without the endpoint map on public pages.
  • The token refresh handler now also updates the HttpOnly cookie when refreshing a token.


Breaking change warning: If you have custom JavaScript (entered via Console scripting, CpScript, or custom .aspx pages) that references cpsys.Api.Endpoints.* to look up API paths, this will return undefined on public/anonymous pages after this update.

Solutions:
  • Hardcode the endpoint path directly (e.g., replace cpsys.Api.Endpoints.AI.SummarizeText with '/ai/summarize/text'). The paths are stable and documented in the API documentation.
  • Use cpApiManager methods with hardcoded paths - cpApiManager.post('/ai/summarize/text', data) works the same way.
  • On authenticated pages (Console, logged-in member areas), cpsys.Api.Endpoints continues to work as before.


Similarly, if custom JavaScript reads cpsys.Api.Token to construct manual Authorization: Bearer headers, this will be undefined on production pages. Solution: Use cpApiManager.post(endpoint, data) or cpApiManager.get(endpoint) which handle authentication automatically via cookies.

Centralpoint CLIA new command-line tool centralpoint.exe is now included in the Centralpoint root directory for all sites. The CLI is primarily used for installation and server setup, including database creation, IIS configuration, and prerequisite checks. It is designed as a foundation for future enhancements such as diagnostics, migration utilities, and debugging tools.
Master > Sync Methods > Web.Config Security HardeningA new sync method SetSecurityDefaults (v8.12.2) has been added to harden web.config security settings across Master and all client sites. It applies the following to Root web.configs:
  • requestValidationMode="4.5" on the httpRuntime element - enables lazy request validation (forced on, upgrades legacy 2.0 values)
  • enableVersionHeader="false" on the httpRuntime element - suppresses the X-AspNet-Version HTTP response header
  • Removes the X-Powered-By response header
  • Adds X-Content-Type-Options: nosniff response header - prevents MIME-type sniffing attacks
  • Adds X-Frame-Options: SAMEORIGIN response header (only if not already set) - prevents clickjacking


Console web.configs receive only the httpRuntime settings (requestValidationMode, enableVersionHeader). The response header settings are inherited from the parent Root web.config via IIS configuration inheritance.

The sync method supports load-balanced configurations and backs up web.configs before making changes.


Master > Deployment > Web Sites
  • Always On option: A new Always On field has been added to the web site creation form. When set to Yes, the new site's IIS application pool is configured with AlwaysRunning start mode, preload enabled, and idle timeout disabled. This eliminates cold-start delays by keeping the worker process alive and warm at all times. The option defaults to No, and it is recommended to enable it for only one production site per server to avoid unnecessary memory consumption.
  • Domain URL rewrite on deployment: New optional Old Domain and New Domain fields allow automatic domain replacement during site creation. When provided, all URLs in the site's database content are rewritten from the old domain to the new domain, including content in data records, audiences, and relation tables. This is useful when deploying a site backup from one server to another with a different domain. The rewrite supports a 45-minute SQL timeout and 1-hour request timeout to handle large databases.
  • Automatic cleanup after site creation: A full site cleanup now runs automatically after every site creation, including file system permissions, orphaned file cleanup, and other maintenance tasks. This eliminates the need to manually run Master > Admin > Utilities > Clean Up after deploying a site.

Centralpoint Update 8.12.1
Monday, March 2, 2026
FeatureSummary
Module Properties > OOXML ExtractionsThe OOXML Extractions feature automatically extracts Open Office XML content from documents when a record is saved. For example, a Word document stored in a source attribute can be automatically converted to OOXML and saved to a designated destination attribute.
CpScript WordAddInDownloadThe WordAddInDownload CpScript now includes a Handler Only option that restricts output to file types supported by the Word Add In handler (.doc, .docx, and .pdf when Include PDF is enabled). When a file is not supported, the script returns an empty string by default. A Non Handler Format property is also available, allowing users to define custom return content for unsupported files. This format supports a DataId variable, making it possible to link to an alternate page when the file type is not handled.
CpScript WordAddInDownloadThe WordAddInDownload CpScript now supports an Include PDF option. When enabled, PDF files are routed through the Word Add In handler and converted to editable Word documents (.docx) on download. This allows users to open and edit PDF content directly in Microsoft Word through the same workflow used for .doc and .docx files. The converted file is saved to disk alongside the original PDF with a .pdf.docx extension, and the record's attribute is updated to reference the new file. The original PDF remains on disk but is no longer linked to the record. It is important to understand this behavior before enabling the feature.
Word Centralpoint Plugin with Smart LinksLeverage your organization's knowledge while managing Word documents

Centralpoint Update 8.12.0
Monday, February 16, 2026
FeatureSummary
Excel ViewerAdded .xlsm support to the Excel Viewer and improved error messaging for unsupported file formats.
Database Maintenance & Stored Procedure ImprovementsSQL Server maintenance scripts have been upgraded to the latest Ola Hallengren maintenance solution. The CommandExecute, IndexOptimize, and DatabaseIntegrityCheck stored procedures are deployed to the master database, replacing older versions. DatabaseIntegrityCheck runs DBCC CHECKDB as part of the scheduled Clean Up process to detect database corruption early. The cpsp_Maintenance stored procedure has been modernized to remove log shrinking operations, which can cause transaction log chain issues. DBCC UPDATEUSAGE is retained for keeping usage statistics accurate. The cpsp_Initialize stored procedure has been hardened with idempotent login creation using IF NOT EXISTS guards, proper escaping of special characters in passwords, and replacement of the deprecated sp_change_users_login command with the modern ALTER USER syntax. A new index on cpsys_DataCurrent.CreateDate has been added to improve sorting and paging performance when ordering content by creation date.
Windows Server 2022/2025 & SQL Server 2022/2025 SupportCentralpoint now supports Windows Server 2022, Windows Server 2025, SQL Server 2022, and SQL Server 2025. OS and SQL Server versions are independently configured and auto-detected during installation and sync. Each site now runs in its own dedicated IIS application pool named after the system name, replacing the shared cpsys_Default and cpweb_Default pools. This improves site isolation so that a crash or recycle in one site does not affect others. On SQL Server 2022, the database compatibility level is upgraded to 160, enabling Query Store with automatic plan regression protection, Accelerated Database Recovery for near-instant crash recovery, and several query optimizer improvements including Parameter Sensitivity Plan optimization, DOP Feedback, and persistent Memory Grant Feedback. On SQL Server 2025, the compatibility level is upgraded to 170, enabling Optimized Locking for significantly reduced lock contention, and ZSTD backup compression is configured as the server default for improved compression ratios. On Windows Server 2022 and later where .NET Framework 4.8.1 is installed, the web.config targetFramework is upgraded from 4.8 to 4.8.1, enabling JIT performance improvements, faster application startup, and TLS 1.3 for outbound connections. Servers on Windows Server 2019 or earlier are not affected. A prerequisite gate verifies that the ASP.NET Core 10.0 runtime is installed before proceeding with the 8.12.0 update. Servers missing the runtime will report an error with download instructions and skip the update until the prerequisite is met.
Data Transfer > Office 365The Source Authorization control now allows administrators to customize and save the Microsoft Graph scopes used during OAuth authorization. Configurations using URL mode can use Sites.Selected to grant the application reduced permissions to execute the data transfer, rather than requiring the broader scopes needed by the Folder Picker.
FormCaptcha CpScriptCentralpoint now supports Google reCAPTCHA v3 Enterprise as an option within the FormCaptcha CpScript. Unlike reCAPTCHA v2 (checkbox), v3 operates invisibly in the background using a score-based risk assessment - no challenge is presented to the user. Administrators can configure a score threshold to control sensitivity. See the help file for documentation and setup assistance.

Centralpoint Update 8.11.123
Monday, February 2, 2026
FeatureSummary
API > Query data recordsExtends the Data API query endpoint to support filtering on relation table (cprel_) columns and taxonomy. See API documentation for request details and filter examples.
.NET Framework and Runtime RequirementsIntroduces automatic .NET Framework 4.8.1 installation using the Windows service agent. If the automatic installation fails on a client server, manual installation of .NET Framework 4.8.1 will be required before version 8.12.0 can be installed. After version 8.11.23 is deployed, a server reboot is required to complete the .NET Framework installation before version 8.12.0 can be deployed. The agent also verifies .NET 10.0.3 runtime is installed. To manually install .NET Framework 4.8.1, download from https://aranon.net/Uploads/Installers/ndp481-x86-x64-allos-enu.exe and run on the server. To manually install .NET 10.0.3 runtime, download the ASP.NET Core Runtime 10.0.3 Hosting Bundle from https://aranon.net/Uploads/Installers/dotnet-hosting-10.0.3.exe and install on the server.
API > Download files from data recordsFile downloads now support virtual directory mappings, allowing files on network shares or external drives to be served through the Data API. See API documentation for configuration details.
Master > Admin > Private Labels > CopyA new Copy Private Label option has been added to the Private Labels properties panel in Master > Admin > Private Labels. When editing an existing private label, a "Copy Private Label" link now appears in the properties section. Clicking it opens a form to enter a new title and description. On submit, a new private label is created with all properties from the original, including branding, styles, grid and form themes, and login customization settings. After copying, a confirmation dialog offers to navigate directly to the new record.
CpScript FormTrackChangesThe DataId property now supports a new value, cpsys_CurrentInfo, which uses Page.CurrentInfo to retrieve the Data Id and attributes of the current record being viewed. Previously, only cpsys_Fdid (Page.FormInfo) was supported.
Module Properties > File ConversionsThe File Conversions feature automatically converts files between formats when a record is saved. For example, a file stored in a source attribute can be automatically converted to PDF and saved to a designated destination attribute.
Data Transfer > Office 365 > Source URLNow supports URL-based folder targeting. Enter a OneDrive or SharePoint folder URL directly instead of using the folder picker. Example URLs are provided for both personal OneDrive and SharePoint sites.

Centralpoint Update 8.11.122
Monday, January 19, 2026
FeatureSummary
API > API KeysNew API Keys feature lets you securely connect external systems to your Centralpoint data. Create keys in Console > API > API Keys, control which modules each key can access, and share documentation with your development team. External systems can search your content and download files using their assigned key.
Admin > Settings > Upload & Data LimitsThe settings interface now contains an "Upload & Data Limits" section. This allows administrators to configure upload and data size limits through the UI instead of manual web.config edits. Configurable settings include Max JSON Length, Max Request Length, Execution Timeout, and Max Allowed Content Length.
Master > Scheduled Tasks > Temp Image File GeneratorThe TempImageFileGenerator scheduled task now supports user-initiated aborts via the Process Monitor UI. This enhancement allows administrators to safely stop long-running image generation tasks. To prevent excessive runtimes, use the MaximumExecutionTimeInMinutes property to set an upper limit on task duration.

Centralpoint Update 8.11.121
Monday, January 5, 2026
FeatureSummary
CpScript ShareModuleSearchButtonThis new CpScript can be added to any Module Designer's Results View to generate a Copy Link button that allows users to share direct links to search results. When clicked, the button creates a shareable URL that will take recipients directly to the same search results page, though users with different permission levels may see varying results based on their access rights. Please use the script builder help file for further details and setup assistance.
Design > Styles > Font FaceThe Font Face attribute has been updated to include additional font families with appropriate fallback stacks. New options include IBM Plex Sans (with Arial, Helvetica, sans-serif fallbacks), Roboto (with Arial, Helvetica, sans-serif fallbacks), Tahoma (with Segoe UI, Verdana, Arial fallbacks), Trebuchet MS (with Lucida Grande, Lucida Sans Unicode, Tahoma fallbacks), Georgia (with Times New Roman, Times fallbacks), Garamond (with Palatino Linotype, Book Antiqua, Palatino fallbacks), and Microsoft Sans Serif (with Segoe UI, Tahoma, Arial fallbacks for Mac and mobile compatibility).
Console Icon Updates & Toolbar AdjustmentsReplaced legacy GIF/PNG icons with updated versions across the Administrative Console, Master Console, and animated help file. Assigned dedicated icon to API section. Increased toolbar width to 300px and reduced tab font size and padding.
CpScript FormSignatureAdded support for a new bodyCssClass property. This will add a class to the body element within the iframe that renders the control. This allows console admins to apply unique styles to controls in the site through Design > Styles > iframe Styles.
CpScript FormAudienceAdded support for a new bodyCssClass property. This will add a class to the body element within the iframe that renders the control. This allows console admins to apply unique styles to controls in the site through Design > Styles > iframe Styles.
CpScript FormTaxonomyAdded support for a new bodyCssClass property. This will add a class to the body element within the iframe that renders the control. This allows console admins to apply unique styles to controls in the site through Design > Styles > iframe Styles.
Data Transfer - SharePoint Custom Column SupportData Transfers with Source = Office 365 now support SharePoint document library custom columns. When connecting to a SharePoint document library, custom list columns are automatically discovered and available as source columns with the listItem.* prefix (e.g., listItem.DateApproved). These can be mapped to destination fields like any other source column.
Master > Scheduled Tasks > Temp Image File GeneratorThe TempImageFileGenerator scheduled task now supports an optional MaximumExecutionTimeInMinutes property. This enhancement allows administrators to restrict the task's runtime by specifying the maximum number of minutes the task is permitted to execute. Attempting to generate thousands of images with a single task may take several hours; this feature helps prevent overruns and ensures better resource management and system reliability.
Master > Admin > Private LabelsThe Styles > Font Face attribute has been updated to include additional font families with appropriate fallback stacks. New options include IBM Plex Sans (with Arial, Helvetica, sans-serif fallbacks), Roboto (with Arial, Helvetica, sans-serif fallbacks), Tahoma (with Segoe UI, Verdana, Arial fallbacks), Trebuchet MS (with Lucida Grande, Lucida Sans Unicode, Tahoma fallbacks), Georgia (with Times New Roman, Times fallbacks), Garamond (with Palatino Linotype, Book Antiqua, Palatino fallbacks), and Microsoft Sans Serif (with Segoe UI, Tahoma, Arial fallbacks for Mac and mobile compatibility).
Load Balancing SupportLoad Balancing provides support for running Centralpoint across multiple servers with a primary and one or more secondary servers. The actual load balancer must be configured manually outside of Centralpoint. The configuration interface at Master > Web Sites > [Web Site] > Configuration > Load Balancing provides verification and configuration workflows that validate prerequisites, copy required files, update web.config settings, and generate IIS setup checklists for secondary servers. Real-time file synchronization is handled by the Centralpoint Agent's FileSystemWatcher, which monitors Uploads and Resources folders and propagates changes bidirectionally between servers. Cache clearing operations are propagated via SOAP web service calls to ensure consistency across the server farm.


For a comprehensive list, please visit our Evergreen Updates section

Server Requirements & Installation

Centralpoint necessitates a Windows server, choosing from options like 2012, 2014, 2016. 2019 Additionally, you'll require Microsoft SQL 2008, 2012, 2014, 2016 or 2019. Below are links to documents detailing Centralpoint's Server Requirements. The installation configurations span same server setups, separate servers for database and web application (including Virtual VMWare, Clustering, Disaster Recovery support). It's built using Microsoft C# and operates on the .NET (4.6) Framework. Centralpoint offers deployment possibilities including MVC, Ajax, or Angular instances through our Web API.

Centralpoint can be deployed on-premise or in the cloud. Our distinct evergreen updates ensure consistent new updates and enhancements, regardless of your hosting choice. These updates, available every two weeks, introduce new options (initially set to off), giving you the discretion to activate and use them. Your digital strategy automatically absorbs the latest changes from Oxcyon, or you can opt out. Examining our 16-year timeline showcases the value of these updates. Centralpoint counters obsolescence present in competitors' offerings that demand repeated technology purchases. Oxcyon offers the possibility that it's the last ECM/Portal technology you'll need to invest in.

For comprehensive information on either On-Premise or Cloud-based hosting, refer to our Technical Documentation & Certifications.

On-Going Training

Oxcyon advocates a Train the Trainer approach, which involves educating your essential stakeholders while recording these training sessions for effortless knowledge dissemination. Our training covers a spectrum, from fundamental content entry into your site to empowering your local development team to construct new tools within Centralpoint. Our aim is to equip you with ample training and expertise to accomplish tasks independently, if desired.

Given our user-friendly interface, Centralpoint training is streamlined, facilitated via online web conferences and supported by online training tools. Centralpoint, designed for non-technologists, employs a point-and-click, drag-and-drop technology, rendering training focused primarily on specific Workflow functions within more intricate tools. If you're familiar with copy-pasting, you're already acquainted with 80 percent of Centralpoint's tools.

Training is tailored to each client's needs and goals. While introductory training is universal, the focus may shift towards certain modules based on your project's priorities. Our service spans diverse verticals, resulting in nuanced training for each, often concentrating on specific modules in use. The breadth of training correlates with the number of modules utilized; the more you employ, the more training becomes pertinent. 

Deep Dive Training Videos

Centralpoint AI Governance Centralpoint AI Governance
For more than 25 years, Centralpoint has served as a trusted enterprise platform for data aggregation, data mining, knowledge management, metadata governance, enterprise search, workflow automation, and information orchestration. Long before the emergence of Generative AI, Large Language Models (LLMs), and Retrieval Augmented Generation (RAG), C...
Centralpoint Virtual Assistant Centralpoint Virtual Assistant
Make your knowledge available to multiple web based applications. Centralpoint's Virtual Assistant allows you to easily apply a live guide to other (or external) web based tools like CRM, Ticket Management Systems, Call Center systems, and even your partners, dealers or resellers. This assistant is added to those sites with a singular line of ja...
Centralpoint Custom Module Development Centralpoint Custom Module Development
Centralpoint facilitates local development, empowering users to craft custom code through MyModules. It also simplifies the creation and customization of content modules within your enterprise. Without requiring access to the server, Visual Studio, or the root directory, you can effortlessly configure necessary fields via Module Configuration. Y...
Data Governance & Cleaning - Automate Metadata & Security Enrichment Data Governance & Cleaning - Automate Metadata & Security Enrichment
Centralpoint's Data Cleaner (otherwise known as Data Goverrnance) collaborates seamlessly with Centralpoint's Data Transfer utility, automating metadata and Taxonomy assignment for your content. This empowers the transformation of any information that lacks proper metadata. Regardless of the information type—r...
Centralpoint Enterprise Search Centralpoint Enterprise Search
Centralpoint can be installed On Premise or in the Cloud, to index, ingest data from disparate silos on a scheduled basis via it's Data Transfer routines. Centralpoint can act as a search appliance indexing or ingesting siloed data to aggregate inf...
Centralpoint Full Tutorial on Data Transformation - Part I Centralpoint Full Tutorial on Data Transformation - Part I
This is an extended training tutorial on Centralpoint's Data Transformation module suite, including its Data Cleaning feature to auto apply metadata. The duration of this video is one hour.
Centralpoint Full Tutorial on Data Transformation - Part II (1 Hour) Centralpoint Full Tutorial on Data Transformation - Part II (1 Hour)
This is an extended training tutorial on Centralpoint's Data Transformation module suite, including its Data Cleaning feature to auto apply metadata. The duration of this video is one hour.
Centralpoint Retention Policy Management Centralpoint Retention Policy Management
Automate document retention policies using Centralpoint. It equips you with user-friendly tools for defining diverse retention policies, incorporating custom filters, queries, and start/end dates. Centralpoint also manages storage repository data, connecting to File Folders, SQL, Oracle, IBM, and third-party providers like Workday, Citibank, and...
Centralpoint Tableau Integration Centralpoint Tableau Integration
Centralpoint integrates directly with Tableau, allowing personalization through our Global Login tools (SAML, Active Directory, oAuth, OpenID) to serve rich Tableau reporting to each user uniquely. This means one tableau report against all users, wherein the data filtered (through the tableau chart) considers the user's security roles. It also a...
Centralpoint Knowledge Management Centralpoint Knowledge Management
To ensure secure Knowledge Management tailored to each user, the right Architecture is vital. Centralpoint, developed in 2000 and updated over 20 years, prioritizes scalability. Its unique ability lies in granular tagging of records, cascading across your business's channels, taxonomical categories, and individual users based on roles.

...
Centralpoint Health Monitor Centralpoint Health Monitor
Centralpoint Health Monitor is a comprehensive set of tools available on the Centralpoint (Master) Server. These tools provide insights into the performance of any individual or group of sites (or portals) within your environment, whether hosted on-premise or through Oxcyon's managed hosting services.

Centralpoint Health Monitor tracks...
Centralpoint (Multi-Tier) Taxonomy Pre-Import Tools Centralpoint (Multi-Tier) Taxonomy Pre-Import Tools
This tool, found under both Import Utilities and Tools (within the client console) is a powerful way to convert your data into multi tiered taxonomy, which will ready your records for import. It was designed to assist Oxcyon staff (initially) when receiving large sets of client data, which needed to have a taxonomy built 'around it'. In this vid...
Planning your Overall Digital Experience Strategy with Centralpoint Planning your Overall Digital Experience Strategy with Centralpoint
A 45 minute video to help your team plan and prepare your Centralpoint Enterprise Information Management ahead of your kick off meeting with Oxcyon. In this video, we discuss information management, governance, and how to maximize the re-usability of your content through your many channels. this video will help you see your enterprise (big pictu...
Centralpoint for Big Data Centralpoint for Big Data
Centralpoint is used for more than omnichannel public and private enterprises. Centralpoint is also used to harness big and disparate data, empowering you with rich UI/UX to serve each and every one of your users uniquely, based on their Audiences and Roles 
Centralpoint Drag-and-Drop Designer & Toolbox Centralpoint Drag-and-Drop Designer & Toolbox
Centralpoint supports agile development through it's Toolbox. The Centralpoint toolbox empowers users to call on any feature needed, and drag and drop it on to the page for use. These items could be form fields, or functions like Google Maps, Proximity Searches, Printer Friendly Icons, Related Content, anything. In this way, Centralpoint provide...
Centralpoint Natural Language Search Centralpoint Natural Language Search
Natural Language Search (NLS), Enterprise AI Search & Knowledge Discovery | Centralpoint
Centralpoint eCommerce Catalog Centralpoint eCommerce Catalog
The Centralpoint ecommerce catalog features products including the variation of each product (Size, Style, Color), so that users may shop the catalog, add items to their cart and check out in a PCI compliant manner. Centralpoint eCommerce catalog has been integrated with PayPal, Authorize.Net, Bank of America, Worldpay and others to ensure seaml...
Centralpoint AI Assistant (Interstitials) Centralpoint AI Assistant (Interstitials)
Your organization's AI is distinctive and tailored to your specific needs; it's not an off-the-shelf solution. What you require is a framework that enables you to deliver the right information to your users precisely when they need it. With Centralpoint AI Assistant, you can place knowledge at your users' fingertips even while they are using oth...
Centralpoint Web API Centralpoint Web API
Centralpoint offers robust support for RESTful Web Services, bolstered by encryption through our Web API. The Centralpoint Web API is an interactive module designed for both creating and consuming Web Services. RESTful Web Services, a form of interoperability between computer syste...
Centralpoint for Digital Signage Centralpoint for Digital Signage
Today's TV monitors and kiosks are wifi enabled. This means that you can treat any monitor as a channel to broadcast information. Whether it be Emergency Room wait times, Cafeteria menus, calendars, or even live Tableau or BI reporting (to the conference room monitor for the board), Centralpoint can help you. Here, Centralpoint treats each of yo...
Centralpoint Email Portal Centralpoint Email Portal
The average knowledge (office) worker uses it 13 hours a week, or 650 hours a year (assuming two weeks’ vacation),1 and yet email technology hasn’t changed much in the 20 years it’s been around—until now, with the introductio...
Centralpoint SAML 2.0 Deep Links Centralpoint SAML 2.0 Deep Links
Centralpoint supports SAML 2.0 to support Deep links for authorized users who are logged in. You will find the Deep Links module under the Admin section of your client console. SAML 2.0 empowers you to broker authentication of your logged in members, so they may access other SAML 2.0 compliant applications with a single click (eliminating the re...
Centralpoint Data Enrichment Centralpoint Data Enrichment
Centralpoint's Data Cleaner (otherwise known as Data Governance) collaborates seamlessly with Centralpoint's Data Transfer utility, automating metadata and Taxonomy assignment for your content. This empowers the transformation of any information that lacks proper metadata. Regardless of the information type—ra...
Centralpoint In-line Visual Editor Centralpoint In-line Visual Editor
Centralpoint's in line Edit View, empowers its users to easily view and manage any element which is serving to the page they are on. This feature is only available to administrators of the Client Console, and demystifies each page, explaining where everything is, and how to access it within one click. When you click on the items found on the pag...
Centralpoint Site Wizard Centralpoint Site Wizard
The Centralpoint Site Wizard empowers you to deploy new stand alone websites (public or private) within your enterprise. The Centralpoint Site Wizard steps you through needed steps to select the appropriate design, and empower administrators over them to contribute content to the enterprise. The site wizard allows you to leverage existing styles...
Centralpoint Multi Tenancy Centralpoint Multi Tenancy
The Centralpoint MASTER ENTERPRISE Server is the parent to your entire enteprise. Whether this means a singular portal, or multiple, the Centralpoint master gives you full control to easily deploy and manage your entire enterprise, including the scheduled tasks needed to automate daily maintenance routines. 
Centralpoint Master Server Centralpoint Master Server
The Centralpoint MASTER ENTERPRISE Server is the parent to your entire enteprise. Whether this means a singular portal, or multiple, the Centralpoint master gives you full control to easily deploy and manage your entire enterprise, including the scheduled tasks needed to automate daily maintenance routines. 
Centralpoint Staging (Quality Control) Portal Centralpoint Staging (Quality Control) Portal
The Centralpoint MASTER ENTERPRISE Server is the parent to your entire enteprise. Whether this means a singular portal, or multiple, the Centralpoint master gives you full control to easily deploy and manage your entire enterprise, including the scheduled tasks needed to automate daily maintenance routines. 
Centralpoint Development Portal Centralpoint Development Portal
The Centralpoint MASTER ENTERPRISE Server is the parent to your entire enteprise. Whether this means a singular portal, or multiple, the Centralpoint master gives you full control to easily deploy and manage your entire enterprise, including the scheduled tasks needed to automate daily maintenance routines. 
Centralpoint Forms Wizard Centralpoint Forms Wizard
The forms wizard is a tool for non technical users to create robust electronic forms, including the rules over workflow. This wizard walks you through a step by step questionairre, which, when completed, creates dynamic electronic forms, which allow you to triage incoming requests, trigger alerts during workflow, and even render live reporting o...
Centralpoint Gamification Centralpoint Gamification
Gamification refers to a process of making systems, service and activities more enjoyable. Centralpoint Gamification allows for your users to compete to be most active in their communities. Incentives can be provided to your users (whether it be employees, clients, or partners) to get more involved and compete to be the most active participant. ...
Centralpoint CRM & Issue Management Centralpoint CRM & Issue Management
Centralpoint's Global Login allows for your many sales representatives or customer service agents to log in to access their activity. Whether this be in the form of issue management, or account management, Centralpoint CRM works in unison with other tools in Centralpoint, like Email Broadcasting, Business Intelligence, Alerts, Email and Personal...
Centralpoint Search & Replace Centralpoint Search & Replace
Centralpoint's Search & Replace tool enables you to search and replace content within your site. You can apply specific filters to search and replace only the information you need. This tool is especially helpful in the event of a product or service name change, and it allows for all historical, archived records to be changed, as well.
Centralpoint Integration with CRM Centralpoint Integration with CRM
Centralpoint's Global Login is a (Cross Forest) Single Sign-On tool that allows you to welcome each user in a unique way and grant them control over only certain types of content.  This allows you to authenticate each user to determine their roles, granting the right access to the right records, including...
Centralpoint Module Designer Centralpoint Module Designer
Say good-bye to contacting your local web vendor to make changes to your site. Centralpoint's Module Designer puts the power of layout and functionality in your hands. Non-technologists can now easily change design and functionality of your site, along with the modules that serve it. Module Designer empowers larger enterprise-class clients (thos...
Centralpoint Health Logs Centralpoint Health Logs
Centralpoint's Health Logs provide your users with tools to track their progress over time. Whether they are tracking their calories, their blood sugar, or their travel expenses on a monthly basis, Health Logs enables them to easily record and monitor their progress. This highly versatile set of reports allows you to set up logs for anyone to ch...
Centralpoint Data Sources & Reporting Centralpoint Data Sources & Reporting
Centralpoint Data Sources allow you to display dynamic content anywhere you desire on your site. This tool enables you to speak directly to Centralpoint's database (or others) to determine the type of content you want available, creating mobile content. For example, let's say while users are reading a news article, you want to display all relate...
Centralpoint Navigation Centralpoint Navigation
Centralpoint's Navigation is an important and essential building block of your enterprise. The Navigation module allows for the creation, deletion, and modification of navigation items, which will be used to render the website navigation. These navigation items can be classified by Audience and Role to&nbs...
Centralpoint Policies and Procedure Manual Centralpoint Policies and Procedure Manual
Centralpoint's Policies & Procedures module streamlines the way organizations manage their policies. This module suite allows you to easily create or update policies, routing them -- via email -- directly to the right administrator for review. Once reviewed and approved, they are automatically released to the site. This way, the parent Proce...
Centralpoint 'MyPortal' or Personalized Portal view  Centralpoint 'MyPortal' or Personalized Portal view
Centralpoint Dashboard Widgets (found under Members)  allow for a personalized portal view for any user, empowering them to configure what data they see from your back office, in a composite (My Portal View). In this way, they can configure what information is important to them, and upon revisiting the portal, they will be shown the latest ...
Centralpoint Digital Asset and DITA Centralpoint Digital Asset and DITA
The Centralpoint Media Manager module is designed to streamline how organizations update and maintain their assets, and then make the newest versions available for download, on request, fresh out of the oven.  Centralpoint's Digital assets Media module enables you to manage your assets separately from your documents, and even allows you to ...
Centralpoint Data Sources & Reporting - High Level Centralpoint Data Sources & Reporting - High Level
Centralpoint Data Sources allow you to display dynamic content anywhere you desire on your site. This tool enables you to speak directly to Centralpoint's database (or others) to determine the type of content you want available, creating mobile content. For example, let's say while users are reading a news article, you want to display all relate...
Centralpoint Education Configuration Centralpoint Education Configuration
Centralpoint's Education Configuration module empowers you to set up as many administrators as you desire to process incoming tests. This module gives you control over who should review incoming tests and what the certificates will look like. It even gives you control over whether or not these tests are taken within a certain time limit and/or h...
Centralpoint Organization Chart or "Wheel" Centralpoint Organization Chart or "Wheel"
Centralpoint's Digital Experience Platform serves as an omnichannel Knowledge Management and content management ecosystem. This universal platform caters to organizations of all sizes and industries. It streamlines information flow from your business through distributors to end users (B2B2C), and reciprocally tracks user actions (C2B2B). It's a ...
Centralpoint Roles (AD/SAML/oAUTH) Centralpoint Roles (AD/SAML/oAUTH)
Centralpoint integrates out of the box with Active Directory, SAML, Okta, Ping, Peoplesoft, Twitter, Facebook, Salesforce, and others. Centralpoint also supports it's own members module, for those users not found within your network security (like legal counsel or advertising partners). This allows you to welcome all users securely, regardless i...
Centralpoint Document Management Centralpoint Document Management
The Centralpoint Document Management module is designed to streamline how organizations update and maintain their documents, and then make the newest versions available for download.   Centralpoint's Document Management module is a two-module suite that allows administrators to manage text and documents -- and the versions of those doc...
Centralpoint Forms to Document Centralpoint Forms to Document
Centralpoint Forms to Documents (or Web to Print) empowers you to create any web-based form you need filtering the data submitted through a TEMPLATE, (Doc, PPT, Excel), which then outputs a standardized templated output document (doc, pdf, ppt, xls) to parse all incoming requests into recorded documents. This approach to document creation guaran...
Centralpoint FitBit Monitoring Centralpoint FitBit Monitoring
Centralpoint's FitBit (and any wearable device integration) allows you to provide incentives for a healthier team. Centralpoint Fitbit integration allows for remote tracking of your staff to monitor such things as Geo positioning, Sleep patterns, Heart Rate, Workouts. This data can be incorporated into Centralpoint's Gamification tools in order ...
Centralpoint E-commerce Centralpoint E-commerce
All content modules within Centralpoint can be e-commerce enabled. This means that if you wish to sell anything -- a record, a video, or an online course -- you can. Of course you can manage a product catalog where users can shop, add items to their cart, and check out, but you may want to make records e-commerce enabled you never before thought...
Centralpoint Data Aggregation Centralpoint Data Aggregation
Centralpoint boasts exceptional Data Transformation tools that automate the aggregation of data from diverse sources. It facilitates both indexing and ingestion of both structured and unstructured data. This encompasses the capability to gather information from a variety of systems (such as SQL, Oracle, IBM, XML, JSON, CSV) as well as files from...
Centralpoint Bloggers Centralpoint Bloggers
Bloggers are the authorized blog authors or writers within Centralpoint. They are the ones posting new blog articles to which others may respond. They might be industry experts you invite to write articles for your users, or they might be in-house employees who are thought-leaders. The blogs typically fall under a taxonomy, so that all blog arti...
Centralpoint Taxonomy Centralpoint Taxonomy
Centralpoint's Taxonomy module is responsible for maintaining a hierarchical list of your website's taxonomy, essentially a library that manages all classification types. Taxonomy serves the purpose of categorizing a website's data, and it can be filtered by audience. Every website has a default Root or Main Taxonomy item, and descendants of thi...
Centralpoint Data Import Utilities Centralpoint Data Import Utilities
Centralpoint's Data Import Utilities is a series of tools designed to prepare for imports. This tool allows you to set global parameters or assumptions when it comes to data imports. Import Utilities is a container for any tools that may aid developers during the import process. It empowers you to centralize information from disparate sources fo...
Centralpoint Design Styles Centralpoint Design Styles
Centralpoint Design Styles allow you to maintain your website styles, classified by Audience and Role, to render distinctly designed websites. These styles primarily relate to colors, fonts, images, and other design elements. The global attributes are always available, but the majority of this module's attributes are controlled by the Site ...
Centralpoint MphC (Mult-Polyheirarchical Classification) Centralpoint MphC (Mult-Polyheirarchical Classification)
Properly classifying data involves a multi-tiered ontology. This hierarchy comprises various levels, each defining the data's nature and context. Simultaneously, data is classified based on intended audiences or departments, tailoring content relevance. Adding another layer, data classification is influenced by security roles, ensuring access co...
Centralpoint Learning Management Courses Centralpoint Learning Management Courses
Centralpoint empowers you to build a culture of learning. Course curriculum can serve each user based upon their role(s) and audience(s). Centralpoint will show each user which tests have been completed, which ones are still outstanding and where they rank in the ecosystem of knowledge users via our Gamification tools. 
Centralpoint Responsive Design Centralpoint Responsive Design
User Experience (UX) and User Interface (UI) design are critical components of any successful digital project. At Oxcyon, we prioritize creating intuitive, accessible, and visually appealing interfaces that provide seamless experiences across all devices. Our expertise in UX/UI design ensures that each client’s project not only meets but exceeds...
Centralpoint Global Login SSO Centralpoint Global Login SSO
Centralpoint's Cross-Forest Single Sign-On (SSO) extends support to various authentication methods, including AD (Active Directory), ADS, LDAP, LDAPS, SAML 2.0 (Okta, Ping, Symantec), Windows Authentication, oAuth, and Open ID (Twitter, Salesforce, Google, Facebook), all available right out of the box. This comprehensive support ensures secure a...
Centralpoint Integration with Active Directory and Windows Authentication Centralpoint Integration with Active Directory and Windows Authentication
Centralpoint's Global Login is a Single Sign-On tool that allows you to welcome each user in a unique way and grant them control over only certain types of content. Not only can you manage each user's roles, but you can also manage their entire design and layout experience, based on the role of the user logging in. When a user logs into the site...
Centralpoint Education Reports Centralpoint Education Reports
Centralpoint Education Reports collect all of the information about your users and their test results, including: who took the test, what time they took the test, what answers were provided, and whether they passed or failed. The only real competitive differentiator today is whether or not an organization can learn faster than their competition....
Centralpoint Advertising Centralpoint Advertising
Advertising is supporting content that is placed around the site's primary content. These ads can consist of images, flash, video, html, or ad scripts (provided by ad-serving companies). These ads can be controlled to appear within specific zones or areas of the site, only when certain keywords are searched, and can be filtered to appear for onl...
Centralpoint Crosswalks Centralpoint Crosswalks
The Centralpoint Crosswalks tool (typically a script) found within the Module Designer is a great illustration as to why you need a centralized and comprehensive platform to manage your content. Crosswalks provide cross-references to related information within your site, putting all of the information at your fingertips. By leveraging Centralpoi...
Centralpoint Syndication (XML, RSS, Json and other) Centralpoint Syndication (XML, RSS, Json and other)
Centralpoint's RSS and XML Syndication empowers you to distribute your content to anyone you desire. This tool allows administrators to create RSS and Atom feeds, as well as populate XML files with data from Centralpoint modules. This module allows administrators to create filtered results from one module at a time. This tool also allows you to ...
Centralpoint Business Intelligence Centralpoint Business Intelligence
A pivotal aspect of effective digital strategy management involves determining high-interest areas and delivering content to clients in alignment with their preferences. Centralpoint offers the means to shape your content strategy around user inclinations by capturing and reporting almost all aspects of their online interactions with you. This e...
Centralpoint Forms Management Centralpoint Forms Management
Centralpoint Forms Management empowers you to create any web-based form you need and then routes the request through custom workflows (depending on the form) and integrates it (including its approvals) with your back office. Forms encompass everything from e-commerce transactions to day-off requests to posting a web page -- each with its own uni...

SDK & Class Libary

Be sure to visit the Centralpoint SDK to learn more, or access our Class Library to see how you can build your own classes within Centralpoint

Centralpoint Master Server

The Centralpoint Master operates as a server, serving as the parent and host for your singular or multiple web projects. This versatile solution can be installed on-premise at your facilities or at your preferred location, facilitated by a user-friendly installation wizard. Each project, potentially substantial on its own, could function as a N-Tiered portal or Wheel.

This architecture excels in scalability, affording you robust control akin to SharePoint Portal Services but yielding superior outcomes. The Centralpoint Master efficiently assimilates updates from Oxcyon, even for on-premise hosting, as pull updates, effectively averting obsolescence and ensuring you're consistently up-to-date.

Upon downloading new modules, these can be seamlessly synchronized, with the option for automated synchronization, to your live project sites as new features. Following synchronization, you have the flexibility to activate the features needed for each site. The Centralpoint Master extends modular control over your local development endeavors. This facilitates the downstream synchronization of newly developed tools to your diverse web projects. Consequently, you can maintain an array of modular functions, mirroring our own practices.

For a comprehensive understanding, we recommend exploring the DEEP DIVE Video Tutorial on Centralpoint Master Server.

Hosting (Environment) Requirements

Centralpoint installation mandates a Windows environment, be it on-premise or in the cloud. A single server setup, accommodating both SQL and Centralpoint, serves as the minimum requirement, Windows 2019. Concurrently, Microsoft SQL, available in Standard or Enterprise versions, must be installed. While clients often opt for separate servers for Centralpoint and SQL, this is not obligatory.

Flexibility is a hallmark of Centralpoint installation. It readily adapts to diverse configurations, tailored to your project and environment, ensuring compatibility with VMware and virtual server installations.

Whether it's an on-premise singular setup or a multi-server virtual installation, Centralpoint adapts to your project's unique needs and the environment you operate in.

During installation, Oxcyon provides an installation wizard for your Centralpoint Master. This server interface will typically require its own IP address (and will generally consume an IP address for each (Development, QC, and your live production portal). This means that in addition to the Microsoft environment, you would typically reserve 4 IP addresses for the management of Centralpoint is a staged environment but is not required.