koha-ark - Manage ARK identifiers in a Koha Catalog


version 1.0.3


Process biblio records from a Koha Catalog in order to update its ARK identifiers. See The ARK Identifier Scheme. The processing is driven by ARK_CONF Koha system preference. It's a json variable. For example:

   "ark": {
     "NMHA": "",
     "NAAN": "12345",
     "ARK": "http://{NMHA}/ark:/{NAAN}/catalog{id}",
     "koha": {
       "id": { "tag": "099", "letter": "a" },
       "ark": { "tag": "003" }

ARK_CONF system preference must contains several elements:

  • NMHA — Name Mapping Authority Hostport. Usually it's a hostname, the hostname of the Koha system itself, or the hostname of a proxy server (or link resolver).

  • NAAN — Name Assigning Authority Number. It's a number identifying the institution, ie the Library using Koha. This number is provided for example by the California Digital Library (CDL),

  • ARK — It's a template used to build the ARK. Three placeholders can be used in the template: NMHA and NAAN from ARK_CONF, and id (Koha biblio record unique identifier extracted from field).

  • — The biblio record field which contains Koha unique id (biblionumber or another id). Contains 2 variables: tag and letter, si it could be a control or a standard field. For example, {"tag": "001"} or {"tag": "099", "letter": "a"}.

  • koha.ark — The biblio record field used to store the ARK. It could be a control or standard field. That's this field in which this script will store the generated field. This is also the field that this script can clear entirely.

There are three commands: check, clear, and update


Process all biblio records, and check them for: bad ARK, correct ARK in the wrong field.


koha-ark clear clears the ARK field (koha.ark variable) in all biblio records of the Catalog.


koha-ark update processes all biblio that have an empty ARK field. The ARK field is created with the appropriate ARK identifier. The ARK is build based on ARK variable from ARK_CONF. For the above ARK_CONF, the biblio record that has 9877 biblionumber will have this in 003 field:


koha-ark check|clear|update [--doit] [--verbose] [--debug] [--help]


 koha-ark clear --doit
 koha-ark update --noverbose --doit
 koha-ark update --debug
 koha-ark check



Without this parameter biblio records are not modified in Koha Catalog.


Enable script verbose mode. Verbose by default. --noverbose disable verbosity. In verbose mode, a progress bar is displayed.


Info about processing is sent to a file named 'koha-ark.json' in the current directory. In 'debug' mode, more information is produced.


Print this help page.


The result of this script is a JSON file koha-ark.log which reports what has been done.

For exemple, if ARK_CONF is missing, the file will report the issue:

   "action" : "check"
   "timestamp" : "\"2018-05-11 16:02:15\"",
   "error" : {
      "err_pref_missing" : {
         "msg" : "ARK_CONF preference is missing",
         "id" : "err_pref_missing"

koha-ark clear contains something like this:

   "timestamp" : "2018-05-11 17:18:42",
   "action" : "clear",
   "result" : {
      "count" : "1569",
      "records" : [
            "biblionumber" : "1",
            "what" : {
               "clear" : {
                  "id" : "clear",
                  "msg" : "Clear ARK field"

koha-ark update --debug contains something like this:

   "timestamp" : "2018-05-11 17:21:02",
   "action" : "update",
   "testmode": 1,
   "result" : {
      "count" : "145282",
      "records" : [
            "biblionumber" : "1570",
            "what" : {
               "generated" : {
                  "id" : "generated"
                  "msg" : "ARK generated",
                  "more" : "",
               "add" : {
                  "id" : "add",
                  "msg" : "Add ARK field"
            "record": [ ... ],
            "after": [ ... ]


Frédéric Demians <>


This software is Copyright (c) 2018 by Fréderic Demians.

This is free software, licensed under:

  The GNU General Public License, Version 3, June 2007