Error after upgrading from 1.12.1 to 1.12.4

hi all,

I’m in the process of migrating Orthanc to a new server and to a newer Orthanc version. After migration of the postgresql database (only for the index; files are on disk. Postgres version v14 on both machines) I get an error (see below). The versions I used are:

Program/plugin Old version New(er) version
Ubuntu 20.04.4 LTS 22.04 LTS
Orthanc 1.12.1 1.12.4
worklists 1.12.1 1.12.4
serve-folders 1.12.1 1.12.4
housekeeper 1.12.1 1.12.4
postgresql-index 3.2 6.2
postgresql-storage 3.2 6.2
web-viewer 2.8 2.9
dicom-web - 1.17
orthanc-explorer-2 - 1.4.1

I’ve tried the latest version of all Orthanc+plugins but that doesn’t help. Same for mainline (for everything). It seems that the database scheme is not automatically upgraded? Hoewever, the problem persists, even after running: Orthanc /path/to/config/orthanc.json --upgrade

I’ve tried manually upgrading the database (by following PostgreSQL plugins — Orthanc Book documentation) but the error remains..
Part of the problem might be caused because it’s not very clear to me which plugin versions to take. There used to be a compatibility matrix but I couldn’t find it anymore.
Any ideas how to fix this?

Thanks, Tim

W0620 10:39:59.780926             MAIN main.cpp:929] Orthanc has started
W0620 10:39:59.781527      HOUSEKEEPER PluginsManager.cpp:158] Starting Housekeeper worker thread
W0620 10:39:59.782116      HOUSEKEEPER housekeeper:/Plugin.cpp:407] Housekeeper: your storage might still contain some dicom-as-json files -> will perform housekeeping
W0620 10:39:59.782137      HOUSEKEEPER housekeeper:/Plugin.cpp:474] Housekeeper: storage compression is now enabled -> will perform housekeeping
W0620 10:39:59.782156      HOUSEKEEPER housekeeper:/Plugin.cpp:521] Housekeeper: DicomWEB plugin might miss series metadata cache -> will perform housekeeping
W0620 10:39:59.782165      HOUSEKEEPER housekeeper:/Plugin.cpp:675] Housekeeper: the DB configuration has changed since last run, will reprocess the whole DB !
W0620 10:39:59.785988      HOUSEKEEPER ServerToolbox.cpp:288] Reconstructing resource e8f894c9-edfa48bc-44af4dcb-2a36d66f-edbf56e8
E0620 10:39:59.792572      HOUSEKEEPER PluginsManager.cpp:154] PostgreSQL error: ERROR:  column "revision" does not exist
LINE 1: ...compressedSize, uncompressedHash, compressedHash, revision F...
                                                             ^

E0620 10:39:59.792742      HOUSEKEEPER PluginsManager.cpp:154] Exception in database back-end: Error with the database engine
E0620 10:39:59.792815      HOUSEKEEPER PluginsManager.cpp:154] Exception in database back-end: Bad sequence of calls
E0620 10:39:59.792956      HOUSEKEEPER PluginsManager.cpp:201] Exception while invoking plugin service 3002: Error with the database engine

config file:

{

  "Name" : "Orthanc",
  "StorageDirectory" : "/home/ubuntu/orthanc/db",
  "IndexDirectory" : "/home/ubuntu/orthanc/db",
  "StorageCompression" : true,
  "MaximumStorageSize" : 0,
  "MaximumPatientCount" : 0,

  "LuaScripts" : [
  ],

  "Plugins" : [
    "/usr/share/orthanc/plugins"
  ],


  /**
   * Configuration of the HTTP server
   **/

  "HttpServerEnabled" : true,
  "HttpPort" : 8042,
  "HttpDescribeErrors" : true,
  "HttpCompressionEnabled" : true,


  /**
   * Configuration of the DICOM server
   **/

  "DicomServerEnabled" : true,
  "DicomAet" : "Orthanc",
  "DicomCheckCalledAet" : false,
  "DicomPort" : 11112,

  "DefaultEncoding" : "Latin1",

  "DeflatedTransferSyntaxAccepted"     : true,
  "JpegTransferSyntaxAccepted"         : true,
  "Jpeg2000TransferSyntaxAccepted"     : false,
  "JpegLosslessTransferSyntaxAccepted" : true,
  "JpipTransferSyntaxAccepted"         : true,
  "Mpeg2TransferSyntaxAccepted"        : true,
  "RleTransferSyntaxAccepted"          : true,

  "UnknownSopClassAccepted"            : true,


  /**
   * Security-related options for the HTTP server
   **/


  "RemoteAccessAllowed" : true,
  "SslEnabled" : false,
  "SslCertificate" : "/home/ubuntu/SSL/certificate.pem",
  "AuthenticationEnabled" : true,

  "RegisteredUsers" : {
    "user" : "#########"
  },



  /**
   * Network topology
   **/

  "DicomModalities" : {
    // "sample" : [ "STORESCP", "localhost", 2000 ]
    // "clearcanvas" : [ "CLEARCANVAS", "192.168.1.1", 104, "ClearCanvas" ]
  },

  "OrthancPeers" : {
    // "peer"  : [ "http://localhost:8043/", "alice", "alicePassword" ]
    // "peer2" : [ "http://localhost:8044/" ]
  },

  "HttpProxy" : "",
  "HttpTimeout" : 10,
  "HttpsVerifyPeers" : true,
  "HttpsCACertificates" : "/home/ubuntu/SSL/certificate.pem",


  /**
   * Advanced options
   **/


  "UserMetadata" : {
    // "Sample" : 1024
  },

  "UserContentType" : {
    // "sample" : 1024
  },

  "StableAge" : 15,

  "StrictAetComparison" : false,
  "StoreMD5ForAttachments" : true,
  "LimitFindResults" : 0,
  "LimitFindInstances" : 0,

  // The maximum number of active jobs in the Orthanc scheduler. When
  // this limit is reached, the addition of new jobs is blocked until
  // some job finishes.
  "LimitJobs" : 10,

  // If this option is set to "false", Orthanc will not log the
  // resources that are exported to other DICOM modalities of Orthanc
  // peers in the URI "/exports". This is useful to prevent the index
  // to grow indefinitely in auto-routing tasks.
  "LogExportedResources" : true,

  // Enable or disable HTTP Keep-Alive (deprecated). Set this option
  // to "true" only in the case of high HTTP loads.
  "KeepAlive" : false,

  // If this option is set to "false", Orthanc will run in index-only
  // mode. The DICOM files will not be stored on the drive.
  "StoreDicom" : true,

  // DICOM associations are kept open as long as new DICOM commands
  // are issued. This option sets the number of seconds of inactivity
  // to wait before automatically closing a DICOM association. If set
  // to 0, the connection is closed immediately.
  "DicomAssociationCloseDelay" : 5,

  // Maximum number of query/retrieve DICOM requests that are
  // maintained by Orthanc. The least recently used requests get
  // deleted as new requests are issued.
  "QueryRetrieveSize" : 10,

  // When handling a C-Find SCP request, setting this flag to "false"
  // will enable case-insensitive match for PN value representation
  // (such as PatientName). By default, the search is case-insensitive.
  "CaseSensitivePN" : false,

  // Performance testing...
  // https://orthanc.uclouvain.be/hg/orthanc/file/default/OrthancServer/Resources/Configuration.json
  "ConcurrentJobs" : 4,
  "HttpThreadsCount" : 8,
  "DicomThreadsCount" : 8,
  "JobsEngineThreadsCount" : {
     "ResourceModification": 2     // for /anonymize, /modify
  },

  // enabling PostgreSQL backend (override default sqlite)
  // By design the EnableStorage option is turned off, so that the dcm files themselves are not stored
  // in the database, but on the filesystem. The benefit is that deleting data from Orthanc then
  // immediately releases the bulk disk storage (else PostgreSQL keeps a claim on the disk storage).
  // The downside might be that PostgreSQL is not used to guarantee data integrity, but that should not
  // be crucial for a QC PACS.
  "PostgreSQL" : {
    "EnableIndex" : true,
    "EnableStorage" : false,
    "Host" : "localhost",
    "Port" : 5432,
    "Database" : "orthanc_db",
    "Username" : "orthanc",
    "Password" : "####"
  },

  "Housekeeper": {

    // Enables/disables the plugin
    "Enable": true,

    //"LimitMainDicomTagsReconstructLevel": "instance",

    // the Global Prooperty ID in which the plugin progress
    // is stored.  Must be > 1024 and must not be used by
    // another plugin
    "GlobalPropertyId": 1025,

    // Forces execution even if the plugin did not detect
    // any changes in configuration
    "Force": false,

    // Delay (in seconds) between reconstruction of 2 studies
    // This avoids overloading Orthanc with the housekeeping
    // process and leaves room for other operations.
    "ThrottleDelay": 1,

    // configure events that can trigger a housekeeping processing
    "Triggers" : {
      "StorageCompressionChange": true,
      "MainDicomTagsChange": true,
      "UnnecessaryDicomAsJsonFiles": true,
      "IngestTranscodingChange": true,
      "DicomWebCacheChange": true   // new in 1.12.2
    }
  },


  "DicomWeb": {
      "Enable": true
  },

      "OrthancExplorer2" : {
        // enables or disables the plugin completely
        "Enable": true,

        // Prefix URL of the OE2 application (and API)
        // A value of '/my-ui' means that the app will be available under /my-ui/app/
        // and the api will be available under /my-ui/api/...
        // Should start and end with a '/'
        "Root" : "/ui/",

        // Prefix URL of the OE2 public application (and API)
        // This is useful if, e.g, your Orthanc is behind a reverse-proxy and has another
        // base endpoint than the "Root" one.
        // If not defined or defined to null, the "Root" value is used as "PublicRoot".
        // A value of '/orthanc/ui/' means that the app will be available under /orthanc/ui/app/
        // and the api will be available under /orthanc/ui/api/ and we assume that the Orthanc API
        // is available at /orthanc/
        "PublicRoot": null,

        // Prefix URL of the orthanc public API
        // This is useful if, e.g, your Orthanc is behind a reverse-proxy.
        "OrthancApiPublicRoot": "/wadqc-vumc/orthanc/",

        // Whether OE2 shall replace the default Orthanc Explorer interface ('/' URL will redirect to OE2)
        "IsDefaultOrthancUI": false,

        // Base theme for the UI (before custom CSS are applied).
        // Allowed values: "light", "dark"
        "Theme": "light",

        // This block of configuration is transmitted as is to the frontend application.
        // Make sure not to store any secret here
        "UiOptions" : {
            // note: all the "Enable..." variables can be set to false by the user-profile (if using the authorization plugin)

            "EnableStudyList": true,                    // Enables the access to the study list (TODO)
            "EnableUpload": true,                       // Enables the upload menu/interface
            "EnableDicomModalities": true,              // Enables the 'DICOM Modalities' interface in the side menu
            "EnableDeleteResources": true,              // Enables the delete button for Studies/Series/Instances
            "EnableDownloadZip": true,                  // Enables the download zip button for Studies/Series
            "EnableDownloadDicomDir": false,            // Enables the download DICOM DIR button for Studies/Series
            "EnableDownloadDicomFile": true,            // Enables the download DICOM file button for Instances
            "EnableAnonymization": true,                // Enables the anonymize button
            "EnableModification": true,                 // Enables the modify button
            "EnableSendTo": true,                       // Enables the 'SendTo' button for Studies/Series/Instances
            "EnableApiViewMenu": false,                 // Enables the API button to open API routes for Studies/Series/Instances (developer mode) 
            "EnableSettings": true,                     // Enables the settings menu/interface
            "EnableLinkToLegacyUi": true,               // Enables a link to the legacy Orthanc UI
            "EnableChangePassword": true,               // Enables the 'change password' button in the side bar.  Only applicable if Keycloak is enabled
            "EnableEditLabels": true,                   // Enables labels management (create/delete/assign/unassign)

            "EnableShares": false,                      // Enables sharing studies.  See "Tokens" section below.
            "DefaultShareDuration": 0,                  // [in days].  0 means no expiration date, 
            "ShareDurations": [0, 7, 15, 30, 90, 365],  // The share durations proposed in the UI

            "EnableAddSeries": true,                    // Enables the "Add series" button
            "AddSeriesDefaultTags": {                   // Default tag values when adding a new series of each type ("pdf", "image" or "stl")
                "pdf" : {
                    "SeriesDescription": "Report",
                    "Modality": "DOC",
                    "SeriesDate": "$TODAY$"             // Allowed keywords: $TODAY$, $STUDY_DATE$, $FILE_DATE$
                },
                "image" : {
                    "SeriesDescription": "Picture",
                    "Modality": "XC",
                    "SeriesDate": "$TODAY$"
                },
                "stl" : {
                    "SeriesDescription": "Model",
                    "Modality": "M3D",
                    "SeriesDate": "$TODAY$"
                }
            },

            // If both OHIF viewer configurations are enabled, only the v3 is taken into account
            "EnableOpenInOhifViewer": false,            // Enables a "open in OHIF viewer" button.  Note: OHIF can not be used together with KeyCloak (https://community.ohif.org/t/ohif-orthanc-token-to-access-a-single-study/727)
            "OhifViewerPublicRoot" : "http://to-be-defined/",  // must end with a '/'.  e.g: "http://ohif.my.site/" means that link to OHIF will look like http://ohif.my.site/Viewer/1.2.3.444.5555....
            "EnableOpenInOhifViewer3": false,           // Enables a "open in OHIF viewer" button.  If the OHIF plugin is loaded, the default value is 'true'
            "OhifViewer3PublicRoot" : "/ohif/",         // must end with a '/'.  e.g: "http://ohif.my.site/" means that link to OHIF will look like http://ohif.my.site/viewer?StudyInstanceUIDs=1.2.3.444.5555....

            "EnableOpenInMedDreamViewer": false,        // Enables a "open in MedDream viewer" button
            "MedDreamViewerPublicRoot" : "http://to-be-defined/",  // must end with a '/'.  e.g: "http://meddream.my.site/Viewer/" means that link to MedDream will look like http://meddream.my.site/?study=1.2.3.444.5555....

            // Defines which icons is used by which enabled viewer.
            // Allowed keys: "meddream", "osimis-web-viewer", "stone-webviewer", "ohif", "ohif-vr", "ohif-tmtv"
            // Allowed values: CSS class that defines the viewer icons (only from bootstrap icons)
            "ViewersIcons" : {
                "osimis-web-viewer": "bi bi-eye",
                "stone-webviewer": "bi bi-eye-fill",
                "ohif": "bi bi-grid",
                "ohif-vr": "bi bi-grid-1x2",
                "ohif-tmtv": "bi bi-grid-3x3-gap",
                "ohif-seg": "fa-solid fa-shapes fa-button",
                "ohif-micro": "fa-solid fa-microscope fa-button",
                "meddream": "bi bi-columns-gap",
                "volview": "bi bi-box",
                "wsi": "fa-solid fa-microscope fa-button"
            },
            // Defines the order in which the viewer icons should appear in the interface
            // OHIF viewers modes that are not listed here, won't appear in the interface.
            "ViewersOrdering" : [
                "osimis-web-viewer",
                "stone-webviewer",
                "ohif",
                "ohif-vr",
                "ohif-tmtv",
                "ohif-seg",
                // "ohif-micro", // currently disabled, this is still experimental in OHIF
                "meddream",
                "volview",
                "wsi"
            ],

            "MaxStudiesDisplayed": 100,                 // The maximum number of studies displayed in the study list
            "MaxMyJobsHistorySize": 5,                  // The maximum number of jobs appearing under 'my jobs' in side bar (0 = unlimited)

            "StudyListSearchMode": "search-as-you-type",// mode to trigger a search in the StudyList.  Accepted values: 'search-as-you-type' or 'search-button'
            "StudyListSearchAsYouTypeMinChars": 3,      // minimum number of characters to enter in a text search field before it starts searching the DB
            "StudyListSearchAsYouTypeDelay": 400,       // Delay [ms] between the last key stroke and the trigger of the search
            "StudyListContentIfNoSearch": "most-recents", // Defines what to show if no search criteria has been entered
                                                          // Allowed values: "empty", "most-recents"

            // Default settings are ok for "small" Orthanc Databases.  For large databases, it is recommended to use these settings:
            // "StudyListSearchMode": "search-button"
            // "StudyListContentIfNoSearch": "empty"

            "ShowOrthancName": true,                    // display the Orthanc Name in the side menu
            
            // The list of tags to be displayed in the upload dialog result list
            // (the first N defined tags in the list are displayed on the UI)
            // Allowed values are: "StudyDate", "AccessionNumber", "PatientID",
            // "PatientName", "PatientBirthDate", "StudyDescription"
            "UploadReportTags" : [                      
                "PatientName", 
                "StudyDescription",
                "PatientID",
                "AccessionNumber", 
                "StudyDate" 
            ],
            "UploadReportMaxTags" : 2,                  // See above, the max number of tags displayed in the upload report

            // The ordered list of columns to display in the study list.
            // Allowed values are:
            //  - Dicom Tags: "StudyDate", "AccessionNumber", "PatientID"
            //                "PatientName", "PatientBirthDate", "StudyDescription"
            //  - special columns:
            //    - "modalities": the list of modalities in the study
            //    - "seriesCount": the number of series in the study
            "StudyListColumns" : [
                "PatientBirthDate",
                "PatientName",
                "PatientID",
                "StudyDescription",
                "StudyDate",
                "modalities",
                "AccessionNumber",
                "seriesCount"
            ],

            // The list of patient level tags that are displayed in the study details and in the modification dialog.
            // Note that these tags must be defined in the Orthanc main dicom tags (https://orthanc.uclouvain.be/book/faq/main-dicom-tags.html)
            "PatientMainTags" : [
                "PatientID",
                "PatientName",
                "PatientBirthDate",
                "PatientSex",
                "OtherPatientIDs"
            ],

            // The list of study level tags that are displayed in the study details and in the modification dialog.
            // Note that these tags must be defined in the Orthanc main dicom tags (https://orthanc.uclouvain.be/book/faq/main-dicom-tags.html)
            "StudyMainTags" : [
                "StudyDate",
                "StudyTime",
                "StudyDescription",
                "AccessionNumber",
                "StudyID",
                "StudyInstanceUID",
                "RequestingPhysician",
                "ReferringPhysicianName",
                "InstitutionName"
            ],

            // The list of series level tags that are displayed in the study details and in the modification dialog.
            // Note that these tags must be defined in the Orthanc main dicom tags (https://orthanc.uclouvain.be/book/faq/main-dicom-tags.html)
            "SeriesMainTags" : [
                "SeriesDate",
                "SeriesTime",
                "SeriesDescription",
                "SeriesNumber",
                "BodyPartExamined",
                "ProtocolName",
                "SeriesInstanceUID"
            ],

            // The modalities to display in the Modalities filter dropdown in the Study List
            "ModalitiesFilter": [
                "CR", "CT", "DOC", "DR", "DX", "KO", "MG", "MR", "NM", "OT", "PR", "PT", "PX", "RTDOSE", "RTSTRUCT", "RTPLAN", "SEG", "SR", "US", "XA", "XC"
            ],

            // Defines the list of languages available in the language picker
            // ex: "AvailableLanguages" : ["en", "fr"],
            // ex: "AvailableLanguages" : []  -> this won't show the language picker at all and force usage of the DefaultLanguage
            "AvailableLanguages": ["en", "de", "es", "fr", "it", "ka", "ru", "si", "uk", "zh"],
            
            // Force the default language.  If null (default), the language is the language from the visitor's browser.
            // ex: "DefaultLanguage" : "en"
            "DefaultLanguage" : null,

            // Should DicomTags be translated (true) or shall we use the English symbolic name whatever the selected language (false)
            // if true: "PatientID" is displayed as e.g "ID Patient" in french
            // if false: "PatientID" is displayed as "PatientID" in all languages
            "TranslateDicomTags" : true,

            // Display format for dates in the study list based on these definitions: https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table
            // example: "dd/MM/yyyy" for European Format,
            //          "yyyyMMdd" for DICOM format
            "DateFormat": "yyyyMMdd",

            // modifications dialog options
            "Modifications": {
                // Modes define options to the /modify route:
                // "modify-keep-uids" is equivalent to KeepSource=True and Keep=["StudyInstanceUID", "SeriesInstanceUID", "SOPInstanceUID"]
                // "modify-new-uids" is equivalent to KeepSource=False
                // "duplicate" is equivalent to KeepSource=True
                // "AllowedModes" and "DefaultMode" apply to studies modification
                "AllowedModes": ["modify-new-uids", "modify-keep-uids", "duplicate"],
                "DefaultMode": "modify-new-uids",

                // same configurations for Series (introduced in 1.2.0)
                "SeriesAllowedModes": ["modify-new-uids", "modify-keep-uids", "duplicate"],
                "SeriesDefaultMode": "modify-new-uids"

            },

            // List of tags that are used to identify studies belonging to the same patient.
            // This appears as "This patient has {count} studies in total" in the study details.
            // ex: "ShowSamePatientStudiesFilter" : ["PatientID", "PatientBirthDate", "PatientSex"]
            "ShowSamePatientStudiesFilter" : [
                "PatientID"
            ]
        },

        "Shares" : {
            "TokenService" : {
                "Url": "http://change-me:8000/shares",
                "Username": "change-me",
                "Password": "change-me"
            },
            "Type": "osimis-viewer-publication" // allowed values: "osimis-viewer-publication", "meddream-viewer-publication", "stone-viewer-publication"
        },

        // When using Keycloak for user management
        "Keycloak" : {
            "Enable": false,
            "Url": "http://change-me:8080/",
            "Realm": "change-me",
            "ClientId": "change-me"
        },

        
        // this section is only relevant if the authorization plugin is enabled and user-profile based permissions are implemented
        "Tokens" : {
            "InstantLinksValidity": 200,                // the duration, in seconds an 'instant' token is valid (e.g. used to download a study, open a study in a viewer)
            "ShareType": "stone-viewer-publication"     // allowed values: "stone-viewer-publication", "osimis-viewer-publication", "meddream-viewer-publication"
        }
    },

    "StoneWebViewer" :
  {
    /**
     * Defines how dates are displayed in the UI. If this option is not
     * set, the DICOM tags will be displayed as such. "DD" will be
     * replaced by the day, "MM" by the month, and "YYYY" by the year.
     **/
    // "DateFormat" : "DD/MM/YYYY",

    /**
     * Defines how times are displayed in the UI. If this option is not
     * set, the DICOM tags will be displayed as such. "hh" will be
     * replaced by the hour, "mm" by the minutes, "ss" by the seconds
     * and ".f" by the fractions of seconds.
     **/
    // "TimeFormat" : "hh:mm:ss.f",


    /**
     * This option allows you to define windowing presets.
     * For each preset, you must provide a name, the window width
     * and window center.
     **/
    "WindowingPresets" : [
      {"Name" : "CT Lung",    "WindowCenter" : -400, "WindowWidth" : 1600},
      {"Name" : "CT Abdomen", "WindowCenter" : 60,   "WindowWidth" : 400},
      {"Name" : "CT Bone",    "WindowCenter" : 300,  "WindowWidth" : 1500},
      {"Name" : "CT Brain",   "WindowCenter" : 40,   "WindowWidth" : 80},
      {"Name" : "CT Chest",   "WindowCenter" : 40,   "WindowWidth" : 400},
      {"Name" : "CT Angio",   "WindowCenter" : 300,  "WindowWidth" : 600}
    ],
    
    /**
     * Enables/disables the combined tool. This is the default mode
     * for mouse interactions. The combined tool allows to access the
     * windowing, zoom and pan from a single mouse configuration. The
     * behaviour of the combined tool is defined in
     * CombinedToolBehaviour. The available mouse actions are
     * "Crosshair", "Windowing", "Pan", "Rotate", "Zoom" and
     * "MagnifyingGlass".
     **/
    "CombinedToolEnabled" : true,
    "CombinedToolBehaviour" : {
      "LeftMouseButton" : "Windowing",
      "MiddleMouseButton" : "Pan",
      "RightMouseButton" : "Zoom"
    },

    /**
     * Enables/disables the print button.
     **/
    "PrintEnabled" : true,

    /**
     * Enables/disables the button to download a screenshot of the
     * active viewport as a JPEG file.
     **/
    "DownloadAsJpegEnabled" : true,

    /**
     * Enables/disables the button to download the display study.
     * Only used if "OrthancApiRoot" is properly set.
     **/
    "DownloadStudyEnabled" : true,

    /**
     * The allowed origin for messages corresponding to dynamic actions
     * triggered by another Web page using "window.postMessage()". The
     * special value "*" will allow any origin, which is an insecure
     * value to be used only during development. If this option is not
     * set, all the requests for dynamic actions will be rejected.
     * https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage
     **/
    "ExpectedMessageOrigin" : "http://localhost:8042",

    /**
     * Root path of the DICOMweb server. This option is automatically
     * set by the Orthanc plugin if missing.
     **/
    "DicomWebRoot" : "../dicom-web",

    /**
     * Set the size of the cache that stores the DICOM files. This
     * size is expressed in megabytes. The default value of 128MB
     * should work in most setups, except if very large multiframe
     * instances are encountered, which might for instance be the case
     * for mammography. Setting this parameter to zero will disable
     * the cache, which should only be done for testing.
     **/
    "DicomCacheSize" : 128,
    
    /**
     * The following parameter can be set if running the Stone Web
     * viewer from Orthanc, but without using the associated plugin
     * (e.g. using the "Serve Folders" sample plugin). Using the
     * plugin would overwrite this setting. This will enable features
     * that are only available if the Orthanc REST API is accessible
     * (download of studies, and playing videos). This option is
     * typically used by the developers of Stone.
     **/
    "OrthancApiRoot" : "..",

    /**
     * If option "DownloadDicomDir" is set to "true", the Stone Web
     * viewer will create DICOMDIR media archives (as generated by the
     * route "/studies/{id}/media" of Orthanc), instead of archives
     * containing a human-readable hierarchy of folders (as generated
     * by the route "/studies/{id}/archive").
     **/
    "DownloadDicomDir" : false,

    /**
     * By setting option "InstitutionLogo" to an URL containing an
     * image, this logo will be displayed at the bottom-left of the
     * Stone Web viewer.
     **/
    "InstitutionLogo" : "",

    /**
     * Define a list of modality type that the viewer will ignore.
     **/
    "SkipSeriesFromModalities": ["SR", "SEG", "PR"],

    /**
     * Whether to display the info panel at startup. Allowed values:
     * "Always", "Never", "User". With "User", the user can decide to
     * show or not the info panel in the user preferences panel (this
     * is implemented using a cookie). (New in Stone Web viewer 2.4)
     **/
    "ShowInfoPanelAtStartup": "User",

    /**
     * Whether to give access to the user preferences window. (New in
     * Stone Web viewer 2.4)
     **/
    "ShowUserPreferencesButton" : true,

    /**
     * Display a "not for diagnostic usage" disclaimer above the list
     * of studies/series. (New in Stone Web viewer 2.4)
     **/
    "ShowNotForDiagnosticUsageDisclaimer": false,

    /**
     * HTTP headers to be set in each request to the DICOMweb server.
     * Note that the value of the headers can be taken from the
     * environment variables.
     **/
    "DicomWebHttpHeaders" : {
      /* "Authorization" : "Bearer ${USER}" */
    }
  }
}

Hi Tim,

Well, there was a buggy update path from PG 3.X to PG 6.2. This has been fixed in PG 7.0 but now, if you have already run further upgrades, it is hard to tel in what situation your schema really is now … The property 4 in the GlobalProperties table will tell you in what revision your schema is:

You may try to run this command manually and then, if does not work, potentially run the full update path again…

$ wget https://orthanc.uclouvain.be/hg/orthanc-databases/raw-file/default/PostgreSQL/Plugins/SQL/Upgrades/UnknownToRev1.sql
$ psql -U postgres -f UnknownToRev1.sql

Note that, if you have already run latest version, you have to run the latest version or downgrade (doc).

Hope this helps,

Alain

Thanks Alain!

I upgraded the postgresql plugins to 8.0 and it’s working now!!
I did try upgrading to all the latest versions before, which I presume should have fixed the problem as well, but I guess there must have been some version mismatches. Is there a compatibility matrix somewhere? Say I would like to upgrade to Orthanc 1.12.8; which versions can/should my plugins have?

regards, Tim

Hi Tim,

Glad your problem has been solved !

There is no compatibility matrix. Each plugin has its own requirements; sometimes, written in the NEWS file - sometimes not.

As soon as you upgrade one plugin, the best is to upgrade them all.

Best,

Alain