diff --git a/doc/transition.dox b/doc/transition.dox
index c1e3cf0..6b34baa 100644
--- a/doc/transition.dox
+++ b/doc/transition.dox
@@ -111,8 +111,8 @@
  * ly_ctx_remove_module()    | -                                    | ^
  * ly_ctx_set_module_data_clb() and the associated ly_module_data_clb type. | - | ^
  * ly_ctx_get_disabled_module() and the associated ly_ctx_get_disabled_module_iter() | - | ^
- * ly_ctx_info()             | ::ly_ctx_get_yanglib_data()          | Clarification of what to expect as the output of the function.
- * -                         | ::ly_ctx_get_yanglib_id ()           | Supplement functionality for ::ly_ctx_get_yanglib_data().
+ * ly_ctx_info()             | ::ly_ctx_get_yanglib_data()          | Clarification of what to expect as the output of the function and possibility to specify custom content ID.
+ * ly_ctx_get_module_set_id() | ::ly_ctx_get_change_count()          | The functionality is the same but the exact meaning of the value was clarified.
  * ly_ctx_new_ylmem()        | TBD                                  | Not yet implemented feature.
  * ly_ctx_new_ylpath()       | TBD                                  | ^
  * -                         | ::ly_ctx_unset_searchdir_last()      | Extend the functionality of the ::ly_ctx_unset_searchdir() to make its use easier.
diff --git a/src/common.h b/src/common.h
index 3d52a67..891688f 100644
--- a/src/common.h
+++ b/src/common.h
@@ -301,7 +301,7 @@
     struct ly_set list;               /**< set of loaded YANG schemas */
     ly_module_imp_clb imp_clb;        /**< Optional callback for retrieving missing included or imported models in a custom way. */
     void *imp_clb_data;               /**< Optional private data for ::ly_ctx.imp_clb */
-    uint16_t module_set_id;           /**< ID of the current set of schemas */
+    uint16_t change_count;            /**< Count of changes of the context, on some changes it could be incremented more times */
     uint16_t flags;                   /**< context settings, see @ref contextoptions. */
     pthread_key_t errlist_key;        /**< key for the thread-specific list of errors related to the context */
 };
diff --git a/src/context.c b/src/context.c
index 1a80bb9..801d636 100644
--- a/src/context.c
+++ b/src/context.c
@@ -262,7 +262,7 @@
             goto error;
         }
     }
-    ctx->module_set_id = 1;
+    ctx->change_count = 1;
 
     /* create dummy in */
     rc = ly_in_new_memory(internal_modules[0].data, &in);
@@ -322,10 +322,11 @@
 }
 
 API uint16_t
-ly_ctx_get_module_set_id(const struct ly_ctx *ctx)
+ly_ctx_get_change_count(const struct ly_ctx *ctx)
 {
     LY_CHECK_ARG_RET(ctx, ctx, 0);
-    return ctx->module_set_id;
+
+    return ctx->change_count;
 }
 
 API void
@@ -740,14 +741,8 @@
     return LY_SUCCESS;
 }
 
-API uint16_t
-ly_ctx_get_yanglib_id(const struct ly_ctx *ctx)
-{
-    return ctx->module_set_id;
-}
-
 API LY_ERR
-ly_ctx_get_yanglib_data(const struct ly_ctx *ctx, struct lyd_node **root_p)
+ly_ctx_get_yanglib_data(const struct ly_ctx *ctx, struct lyd_node **root_p, const char *content_id_format, ...)
 {
     LY_ERR ret;
     uint32_t i;
@@ -756,6 +751,7 @@
     char *str;
     const struct lys_module *mod;
     struct lyd_node *root = NULL, *root_bis = NULL, *cont, *set_bis = NULL;
+    va_list ap;
 
     LY_CHECK_ARG_RET(ctx, ctx, root_p, LY_EINVAL);
 
@@ -858,7 +854,9 @@
     }
 
     /* IDs */
-    r = asprintf(&str, "%u", ctx->module_set_id);
+    va_start(ap, content_id_format);
+    r = vasprintf(&str, content_id_format, ap);
+    va_end(ap);
     LY_CHECK_ERR_GOTO(r == -1, LOGMEM(ctx); ret = LY_EMEM, error);
     ret = lyd_new_term(root, NULL, "module-set-id", str, 0, NULL);
     LY_CHECK_ERR_GOTO(ret, free(str), error);
diff --git a/src/context.h b/src/context.h
index ee48010..77a4a60 100644
--- a/src/context.h
+++ b/src/context.h
@@ -125,9 +125,8 @@
  * - ::ly_ctx_reset_latests()
  *
  * - ::ly_ctx_get_yanglib_data()
- * - ::ly_ctx_get_yanglib_id()
  *
- * - ::ly_ctx_get_module_set_id()
+ * - ::ly_ctx_get_change_count()
  * - ::ly_ctx_internal_modules_count()
  *
  * - ::lys_search_localfile()
@@ -283,13 +282,12 @@
 LY_ERR ly_ctx_unset_options(struct ly_ctx *ctx, uint16_t option);
 
 /**
- * @brief Get current ID of the modules set. The value is available also
- * as module-set-id in ::ly_ctx_get_yanglib_data() result.
+ * @brief Get the change count of the context (module set) during its life-time.
  *
  * @param[in] ctx Context to be examined.
- * @return Numeric identifier of the current context's modules set.
+ * @return Context change count.
  */
-uint16_t ly_ctx_get_module_set_id(const struct ly_ctx *ctx);
+uint16_t ly_ctx_get_change_count(const struct ly_ctx *ctx);
 
 /**
  * @brief Callback for freeing returned module data in #ly_module_imp_clb.
@@ -511,23 +509,26 @@
         const char **features);
 
 /**
- * @brief Get current ID of the modules set. The value is available also
- * as module-set-id in ::ly_ctx_get_yanglib_data() result.
- *
- * @param[in] ctx Context to be examined.
- * @return Numeric identifier of the current context's modules set.
- */
-uint16_t ly_ctx_get_yanglib_id(const struct ly_ctx *ctx);
-
-/**
  * @brief Get data of the internal ietf-yang-library module with information about all the loaded modules.
  * ietf-yang-library module must be loaded.
  *
+ * Note that "/ietf-yang-library:yang-library/datastore" list instances are not created and should be
+ * appended by the caller. There is a single "/ietf-yang-library:yang-library/schema" instance created
+ * with the key value "complete".
+ *
+ * If the data identifier can be limited to the existence and changes of this context, the following
+ * last 2 parameters can be used:
+ *
+ * "%u" as @p content_id_format and ::ly_ctx_get_change_count() as its parameter.
+ *
  * @param[in] ctx Context with the modules.
  * @param[out] root Generated yang-library data.
+ * @param[in] content_id_format Format string (printf-like) for the yang-library data identifier, which is
+ * the "content_id" node in the 2019-01-04 revision of ietf-yang-library.
+ * @param[in] ... Parameters for @p content_id_format.
  * @return LY_ERR value
  */
-LY_ERR ly_ctx_get_yanglib_data(const struct ly_ctx *ctx, struct lyd_node **root);
+LY_ERR ly_ctx_get_yanglib_data(const struct ly_ctx *ctx, struct lyd_node **root, const char *content_id_format, ...);
 
 /**
  * @brief Free all internal structures of the specified context.
diff --git a/src/schema_compile.c b/src/schema_compile.c
index 16ffe3d..0877fea 100644
--- a/src/schema_compile.c
+++ b/src/schema_compile.c
@@ -1600,7 +1600,7 @@
     }
 
     /* context will be changed */
-    ++mod->ctx->module_set_id;
+    ++mod->ctx->change_count;
 
     sp = mod->parsed;
 
diff --git a/src/tree_schema.c b/src/tree_schema.c
index 67e4804..c145c04 100644
--- a/src/tree_schema.c
+++ b/src/tree_schema.c
@@ -1360,7 +1360,7 @@
     /* add into context */
     ret = ly_set_add(&ctx->list, mod, 1, NULL);
     LY_CHECK_GOTO(ret, cleanup);
-    ctx->module_set_id++;
+    ctx->change_count++;
 
     /* resolve includes and all imports */
     LY_CHECK_GOTO(ret = lys_resolve_import_include(pctx, mod->parsed), cleanup);
diff --git a/tests/utests/basic/test_context.c b/tests/utests/basic/test_context.c
index de535f0..f6ab81c 100644
--- a/tests/utests/basic/test_context.c
+++ b/tests/utests/basic/test_context.c
@@ -208,11 +208,11 @@
     ly_ctx_destroy(UTEST_LYCTX, NULL);
 
     /* invalid arguments */
-    assert_int_equal(0, ly_ctx_get_module_set_id(NULL));
-    CHECK_LOG("Invalid argument ctx (ly_ctx_get_module_set_id()).", NULL);
+    assert_int_equal(0, ly_ctx_get_change_count(NULL));
+    CHECK_LOG("Invalid argument ctx (ly_ctx_get_change_count()).", NULL);
 
     assert_int_equal(LY_SUCCESS, ly_ctx_new(NULL, LY_CTX_DISABLE_SEARCHDIRS, &UTEST_LYCTX));
-    assert_int_equal(UTEST_LYCTX->module_set_id, ly_ctx_get_module_set_id(UTEST_LYCTX));
+    assert_int_equal(UTEST_LYCTX->change_count, ly_ctx_get_change_count(UTEST_LYCTX));
 
     assert_int_equal(LY_SUCCESS, ly_in_new_memory("module x {namespace urn:x;prefix x;}", &in));
     assert_int_equal(LY_EINVAL, lys_create_module(UTEST_LYCTX, in, 4, 1, NULL, NULL, NULL, &unres, &mod1));
diff --git a/tests/utests/basic/test_yanglib.c b/tests/utests/basic/test_yanglib.c
index 563fbb3..9c52ac0 100644
--- a/tests/utests/basic/test_yanglib.c
+++ b/tests/utests/basic/test_yanglib.c
@@ -114,7 +114,13 @@
     UTEST_ADD_MODULE(schema_a, LYS_IN_YANG, feats, NULL);
     UTEST_ADD_MODULE(schema_b, LYS_IN_YANG, NULL, NULL);
 
-    assert_int_equal(LY_SUCCESS, ly_ctx_get_yanglib_data(UTEST_LYCTX, &tree));
+    assert_int_equal(LY_SUCCESS, ly_ctx_get_yanglib_data(UTEST_LYCTX, &tree, "<<%u>>", ly_ctx_get_change_count(UTEST_LYCTX)));
+    lyd_free_all(tree);
+    assert_int_equal(LY_SUCCESS, ly_ctx_get_yanglib_data(UTEST_LYCTX, &tree, "%u", -10));
+    lyd_free_all(tree);
+    assert_int_equal(LY_SUCCESS, ly_ctx_get_yanglib_data(UTEST_LYCTX, &tree, ""));
+    lyd_free_all(tree);
+    assert_int_equal(LY_SUCCESS, ly_ctx_get_yanglib_data(UTEST_LYCTX, &tree, "%u", ly_ctx_get_change_count(UTEST_LYCTX)));
 
     /* make sure there is "a" with a submodule and deviation */
     ret = lyd_find_xpath(tree, "/ietf-yang-library:yang-library/module-set/module[name='a'][submodule/name='a_sub']"
diff --git a/tools/lint/common.c b/tools/lint/common.c
index db9036c..444f527 100644
--- a/tools/lint/common.c
+++ b/tools/lint/common.c
@@ -349,7 +349,7 @@
     const struct lys_module *mod;
 
     if (outformat != LYD_UNKNOWN) {
-        if (ly_ctx_get_yanglib_data(ctx, &ylib)) {
+        if (ly_ctx_get_yanglib_data(ctx, &ylib, "%u", ly_ctx_get_change_count(ctx))) {
             YLMSG_E("Getting context info (ietf-yang-library data) failed. If the YANG module is missing or not implemented, use an option to add it internally.\n");
             return 1;
         }
