Powered by Zoomin Software. For more details please contactZoomin

What's New in MarkLogic 12

Planning for future upgrades

  • Last Updated: May 18, 2026
  • 4 minute read
    • MarkLogic Server
    • Version 12.0
    • Documentation

This section provides guidelines and warnings for preparing for changes expected in a future release, such as announcements of deprecated interfaces. You are not required to make changes related to the topics in this section now, but you should plan to do so in the future.

Machine Learning with the ONNX API is deprecated

Starting with MarkLogic 12.0, the built-in ONNX runtime and related APIs are deprecated. This capability is currently being evaluated and will either be removed or have major changes to make it much more usable in a later version of MarkLogic 12.

Document fragmentation is deprecated

Starting with MarkLogic 12.0, the document fragmentation feature is deprecated. Document fragmentation is complex to use and often results in unexpected behavior, so users have long been discouraged from using it. This capability will be removed or completely redesigned in a future major release of MarkLogic Server.

XQuery 0.9-ml is deprecated

The XQuery 0.9-ml dialect has been deprecated and will no longer be supported in a future release. It is recommended that you port any legacy 0.9-ml XQuery code to either enhanced XQuery dialect (1.0-ml) or strict XQuery dialect (1.0). See Porting 0.9-ml XQuery Code to Enhanced 1.0-ml in the XQuery and XSLT Reference Guide.

Template Driven Extraction (TDE) functions are also affected by this deprecation. The function cts:valid-index-path() may throw error messages if you do not upgrade your code to XQuery dialect 1.0-ml or 1.0.

info and infodev APIs is deprecated

The XQuery library modules in the info and infodev namespaces are deprecated as of MarkLogic 9 and will be removed from the product in a future release. For example, the functions info:ticket() and infodev:ticket-create() are deprecated.

Annotated Query Output from search:parse is deprecated

The search:parse() XQuery function and search.parse() server-side JavaScript function can return an annotated cts:query if you pass in "cts:annotated-query" as the output format parameter value. As of MarkLogic 9, use of "cts:annotated-query" is deprecated. Support for this format will be removed in a future release.

If you currently use the annotated query output as an intermediate step in a transformation, then you should use the structured query ("search:query") output format instead. Runtime modification of queries is a primary use case for structured query. See Searching Using Structured Queries in Develop Search Applications.

If you currently use the annotated query output format to recover the original query text using search:unparse, then you should cache the original query text yourself.

Search API Grammar Customization is deprecated

Customizing the string query grammar through the Search API grammar query option is deprecated. Support for this feature will be removed in a future release.

If your application currently relies on a Search API grammar customization, then you should consider these alternatives:

  • xqysp for XQuery.
  • Jison for Server-Side JavaScript.

Search API searchable-expression is deprecated

Due to security and performance considerations, beginning in MarkLogic 9.0-10, the searchable-expression property or element in query options is deprecated.

In addition, in 9.0-10 and moving forward, the searchable-expression requires the eval-search-string privilege.

Search API users should modify queries that use query options with searchable expressions to remove the searchable-expression:

  • For the parts of the searchable expression resolvable with indexes, use query clauses instead.
  • For the parts of the searchable expression resolvable only by scanning (such as regex predicates), the preferred approach is to remove them in favor of using indexes. Where necessary, filter the results in post-processing.

The mlcp Option -tolerate_errors is deprecated

The -tolerate_errors option of the mlcp import command is deprecated (and ignored) as of MarkLogic 9.0-2. This option will be removed in a future release. mlcp now always tolerates errors.

xdmp:transaction-mode XQuery Prolog Option is deprecated

The XQuery prolog option xdmp:transaction-mode is deprecated as of MarkLogic 9.0-2. Use the xdmp:commit and xdmp:update prolog options instead.

Note that the new prolog options differ from xdmp:transaction-mode in that they affect only the transaction created after their declaration, whereas xdmp:transaction-mode settings persist across an entire session.

This table illustrates the correspondence between the old and new option settings:

xdmp:transaction-mode value

Equivalent xdmp:commit and xdmp:updateOption Settings

"auto"

declare option xdmp:commit "auto";

declare option xdmp:update "auto";

"update-auto-commit"

declare option xdmp:commit "auto";

declare option xdmp:update "true";

"update"

declare option xdmp:commit "explicit";

declare option xdmp:update "true";

"query"

declare option xdmp:commit "explicit";

declare option xdmp:update "false";

Note that the default values for xdmp:commit and xdmp:update are both “auto”, so you do not need to set this value explicitly in most cases.

See xdmp:update() and xdmp:commit() in the XQuery and XSLT Reference Guide.

transaction-mode option of xdmp:eval is deprecated

The transaction-mode option of the xdmp.eval() JavaScript function and the xdmp:eval() XQuery function is deprecated as of MarkLogic 9.0-2. Use the commit and update options instead.

This option deprecation (and alternative option settings) apply to these functions:

XQuery

JavaScript

xdmp:eval()

xdmp.eval()

xdmp:javascript-eval()

xdmp.xqueryEval()

xdmp:invoke()

xdmp.invoke()

xdmp:invoke-function()

xdmp.invokeFunction()

xdmp:spawn()

xdmp.spawn()

xdmp:spawn-function()

This table shows the correspondence between the old and new option settings:

transaction-mode Option Value

Equivalent commit and update Option Values

auto

commit: "auto"

update: "auto"

update-auto-commit

commit: "auto"

update: "true"

update

commit: "explicit"

update: "true"

query

commit "explicit"

update "false"

XCC Session.setTransactionMode is deprecated

Use of Session.setTransactionMode to specify commit semantics and transaction type is deprecated as MarkLogic 9.0-2. This function will be removed in a future version. Use the new Session.setAutoCommit and Session.setUpdate methods instead.

This table shows how to replace calls to setTransactionMode with equivalent calls to setAutoCommit and setUpdate:

If you call setTransactionMode with this value,

Then replace it with the following calls on the same Session object:

AUTO

setAutoCommit(true); setUpdate(Session.Update.AUTO);

MULTI_AUTO

setAutoCommit(false); setUpdate(Session.Update.AUTO);

UPDATE

setAutoCommit(false); setUpdate(Session.Update.TRUE);

QUERY

setAutoCommit(false); setUpdate(Session.Update.FALSE);

UPDATE_AUTO_COMMIT

setAutoCommit(true); setUpdate(Session.Update.TRUE);

QUERY_SINGLE_STATEMENT

setAutoCommit(true); setUpdate(Session.Update.FALSE);

REST Client API namespace configuration is deprecated

The REST Client API methods for configuring namespace bindings are deprecated as of MarkLogic 9.0-5 and will be removed in a future release.

Instead, you should use the REST Management API to define namespace bindings for your app server. See the namespaces property of the payload for PUT /manage/v2/servers/{id|name}/properties.

This deprecation notice affects the following methods of the REST Client API:

  • GET, POST, PUT and DELETE on /v1/config/namespaces
  • GET, PUT, and DELETE on /v1/config/namespaces/{prefix}

Database searches using one or two characters are deprecated

Database searches using only one or two characters have been deprecated.

TitleResults for “How to create a CRG?”Also Available inAlert