← My IT and Apps·
Cordex-ReferenceCordex-Reference
Cordex-Reference documentation

Cordex-Reference Admin Guide

Licences, tables, permanent filters, variant tables and views for Cordex Reference administrators.

Cordex ReferenceAudience: Cordex Reference administratorsGuide v1.0.12Plug-in CordexReference.Plugins 1.0.9.0

Overview

Cordex Reference brings the Cordex Terminology API into Dataverse as read-only virtual tables: clinical terminologies (SNOMED CT-AU, LOINC, ICD-11, CDC code sets, the Australian National Notifiable Disease List) and reference data (addresses, countries, states, time zones, languages, currencies, units, elements and the GBIF taxonomy of plants, animals and other organisms). Users see the tables like any other table: views, forms, Quick Find, Advanced find and lookups from your own tables.

  • No data is copied into Dataverse. Each query goes to Cordex at the moment it runs, so users always see the current approved release.
  • The solution is free. Access to data comes from Cordex Terminology licence keys, one per plan (Clinical, Geography, People, Commerce, Science, Enterprise).
  • Licence keys decide which tables return data. All tables are installed; a table without a covering key says so instead of returning rows.
  • Administration happens on the Cordex Reference Administration page: Licences, Tables, Variants, Filters and Views.
  • Cordex Developer under Guides in the app opens the Cordex Terminology developer site (cordexapps.com/cordex-terminology/developer/) in a new browser tab.
  • Every table name starts with Cordex (for example Cordex Currency), so users can tell Cordex tables from standard and other custom tables.
  • Cordex Terms under Guides in the app opens the Cordex Reference terms in a new browser tab.
  • Terms and support: use of Cordex Reference is governed by the Cordex Reference terms; the datasets by the Cordex Terminology terms and data licences. Support is by email to cordex-reference@myitandapps.com.au and covers the solution as supplied, not your environment or customisations.
This guide is for Cordex Reference administrators: users with Cordex Reference Administrator, System Customizer or System Administrator. The Ops Guide covers monitoring, environment copies, troubleshooting and removal.

Before you start

  • The role Cordex Reference Administrator, System Customizer or System Administrator for licences, table status and permanent filters (see Give users access). Variants, views and new columns change tables, views and forms, so they need System Customizer or System Administrator, in development.
  • A Cordex Terminology licence key for each plan you bought (format KW-XXXX-XXXX-XXXX-XXXX). Your Cordex agreement decides which environments a key may be used in.
  • Dataverse reaches Cordex from Microsoft's servers over HTTPS (https://api.cordexapps.com). There is nothing to configure on your network.
  • The model-driven app that holds Cordex Reference, with the Cordex Reference Administration page in its site map.

Datasets and tables

Cordex Reference installs one virtual table per Cordex dataset. Address (AU) has two tables: Address Area (postcode and locality roll-ups) and Address (every geocoded G-NAF address).

TableLogical namePlanCordex datasetEntity set
SNOMED CT-AUmitaa_ausnomedctClinicalau/clinical/snomedCodes
Notifiable Disease (AU)mitaa_aunotifiablediseaseClinicalau/clinical/notifiable-diseaseCodes
LOINCmitaa_loincClinicalglobal/clinical/loincCodes
ICD-11 MMSmitaa_icd11Clinicalglobal/clinical/icd11Codes
CDC CVXmitaa_cdccvxClinicalglobal/clinical/cvxCodes
CDC MVXmitaa_cdcmvxClinicalglobal/clinical/mvxCodes
CDC Vaccine Groupmitaa_cdcvaccinegroupClinicalglobal/clinical/vaccine-groupCodes
CDC CVX to VISmitaa_cdccvxvisClinicalglobal/clinical/cvx-visCodes
CDC VISmitaa_cdcvisClinicalglobal/clinical/visCodes
CDC VIS URLmitaa_cdcvisurlClinicalglobal/clinical/vis-urlCodes
CDC Productmitaa_cdcproductClinicalglobal/clinical/productCodes
CDC CPT to CVXmitaa_cdccptClinicalglobal/clinical/cptCodes
CDC NDC Unit of Salemitaa_cdcndcsaleClinicalglobal/clinical/ndc-saleCodes
CDC NDC Unit of Usemitaa_cdcndcuseClinicalglobal/clinical/ndc-useCodes
CDC NDC Linkermitaa_cdcndclinkerClinicalglobal/clinical/ndc-linkerCodes
CDC NDC Referencemitaa_cdcndcreferenceClinicalglobal/clinical/ndc-referenceCodes
ICD-10-CMmitaa_cdcicd10cmClinicalglobal/clinical/icd10cmCodes
CDC NNDSS Event Codemitaa_cdcnndsseventcodeClinicalglobal/clinical/nndss-event-codeCodes
CDC NNDSS Conditionmitaa_cdcnndssconditionClinicalglobal/clinical/nndss-conditionCodes
Address Area (AU)mitaa_auaddressareaGeographyau/geography/addressCodes
Address (AU)mitaa_auaddressGeographyau/geography/addressAddresses
Countrymitaa_countryGeographyglobal/geography/countryCodes
Subdivisionmitaa_subdivisionGeographyglobal/geography/subdivisionCodes
Time Zonemitaa_timezoneGeographyglobal/geography/timezoneCodes
Calling Codemitaa_callingcodeGeographyglobal/geography/calling-codeCodes
Languagemitaa_languagePeopleglobal/people/languageCodes
Sex and Gender (AU)mitaa_ausexgenderPeopleau/people/sex-genderCodes
Occupation (AU)mitaa_auoccupationPeopleau/people/occupationCodes
Emojimitaa_emojiPeopleglobal/people/emojiCodes
Currencymitaa_currencyCommerceglobal/commerce/currencyCodes
Unitmitaa_unitCommerceglobal/commerce/unitCodes
Elementmitaa_elementScienceglobal/science/elementCodes
Taxonomy (GBIF)mitaa_taxonomyScienceglobal/science/taxonomyCodes
Animalia (GBIF)mitaa_taxonomyanimaliaScienceglobal/science/taxonomy built-in filter Kingdom eq 'Animalia'Codes
Plantae (GBIF)mitaa_taxonomyplantaeScienceglobal/science/taxonomy built-in filter Kingdom eq 'Plantae'Codes
Fungi (GBIF)mitaa_taxonomyfungiScienceglobal/science/taxonomy built-in filter Kingdom eq 'Fungi'Codes
Chromista (GBIF)mitaa_taxonomychromistaScienceglobal/science/taxonomy built-in filter Kingdom eq 'Chromista'Codes
Protozoa (GBIF)mitaa_taxonomyprotozoaScienceglobal/science/taxonomy built-in filter Kingdom eq 'Protozoa'Codes
Bacteria (GBIF)mitaa_taxonomybacteriaScienceglobal/science/taxonomy built-in filter Kingdom eq 'Bacteria'Codes
Archaea (GBIF)mitaa_taxonomyarchaeaScienceglobal/science/taxonomy built-in filter Kingdom eq 'Archaea'Codes
Viruses (GBIF)mitaa_taxonomyvirusesScienceglobal/science/taxonomy built-in filter Kingdom eq 'Viruses'Codes
Incertae Sedis (GBIF)mitaa_taxonomyincertaesedisScienceglobal/science/taxonomy built-in filter Kingdom eq 'incertae sedis'Codes

Every Codes table has the same core columns: Id (key), Code, Source Entity Id, Entity Uri, Display (name), Definition, Status, Parent Code, Parent Id, Hierarchy Path, System and Release, followed by the dataset's own columns. The Science plan also covers Unit. Enterprise covers every dataset.

In the Cordex-Reference app the tables are grouped by API family (Clinical, Commerce, Geography, People, Science) and listed alphabetically. Each table opens on its Active view (rows with Status active); the All view shows every row. The main form shows the core columns under General and the dataset's own columns under Details. Address (AU) has no Status column and opens on its All view.

Licences

Add a licence

  1. Open Cordex Reference Administration, tab Licences.
  2. Paste the key into Licence key. Optionally give it a name, for example Clinical production.
  3. Select Add and validate. Saving checks the key with Cordex (up to a minute) and binds it to every table it covers.

The list shows only the last four characters of each key. The key itself is stored only in a secured column of the licence; the provider reads it on the server, and it never reaches a browser.

Licence status

StatusMeaningWhat to do
PendingThe key was just saved and is being checked with Cordex.Wait for the check to finish (up to a minute). If it stays Pending, select Validate.
ValidCordex accepted the key. Plan, expiry and the datasets it covers are stored.None.
ExpiredCordex reports the licence has expired (client_key_expired).Renew the licence, then select Validate. Tables it covered lose access until then unless another key covers them.
InvalidCordex did not accept the key (unknown, revoked or mistyped).Check the key with your Cordex account and add it again.
ErrorThe check could not finish: Cordex rate limit, an outage, a network failure or the 100 second time budget.Select Validate later. A licence that was Valid stays Valid with its stored datasets; only the message records the failed check.

Several keys

An environment can hold one key per plan. When more than one valid key covers a dataset, each table uses exactly one key, chosen in this order:

  1. the key that covers the most datasets (an Enterprise key covers every dataset, so it outranks any single-plan key);
  2. then the key with the latest expiry (a key with no expiry counts as latest);
  3. then the key added first.

All users of a table share its key's rate limit: 1,200 calls per minute per plan key, 6,000 for Enterprise.

Validate, renew and remove

  • Validate on a row, or Validate all, checks keys with Cordex again and binds every table. Do this after a renewal or a plan change.
  • Remove deletes the licence and binds the tables again without it. Tables only it covered show No licence.
  • Adding a key that already exists is refused with the name of the row that holds it.

Table status

StatusMeaning
LicensedA valid key covers the dataset; it is bound to the table.
Not in planThere are valid keys, but none covers this dataset.
Not publishedA valid key covers the dataset, but Cordex has not published it yet (for example a dataset announced in the API contract but not yet loaded).
No licenceNo valid key exists in this environment.
Not installedThe virtual table is not in this environment, or it has no data source record.
Data source sharedTwo Cordex tables point at the same data source record. Neither is bound until each has its own record.

Give users access

Cordex Reference ships two security roles. Assign them with a role that lets users run model-driven apps, such as Basic User.

RoleForWhat it allows
Cordex Reference UserEveryone who reads Cordex dataRead on every Cordex table; opens the Cordex-Reference app. No access to licences or table status. Without it users see You do not have permission to access these records.
Cordex Reference AdministratorPeople who manage licences and filtersEverything above, plus the Cordex Reference Administration page and the guides: add, validate and remove licences, see table status, set permanent filters on Cordex tables. Licence keys can be added but never read back.
System Customizer, System AdministratorMakers in developmentAlso variants, views and new columns (Variants and Views tabs, Columns from Cordex), which change tables, views and forms.

The administration page and the Admin and Ops guides appear in the app menu only for users who can read the Cordex licence table. A user without that access who opens the page sees which roles open it.

System Customizer: the setup checks whether this Microsoft role holds what the administration page needs in your environment. If a System Customizer does not see Reference Admin, assign Cordex Reference Administrator as well.

Assign a role

  1. Sign in to the Power Platform admin center as a System Administrator.
  2. Manage, Environments, select the environment, Settings.
  3. Users + permissions, Users, select the user, Manage security roles.
  4. Tick Cordex Reference User (and Cordex Reference Administrator for administrators) and Basic User. Select Save.

You can assign the roles to a team instead of each user.

Do not edit the Cordex roles. They are part of the managed Cordex solution; editing them adds an unmanaged change that hides later updates. Your variant tables are yours: give Read (Organization) on them in a security role in your own solution, in development, and assign that role as well.

Sources: Microsoft Learn, Assign a security role to a user; Secure your custom API by requiring a privilege.

Permanent table filters

A permanent filter limits a table for everyone, everywhere: views, Quick Find, lookups, forms and the API. It is sent to Cordex with every query, so rows outside it never leave Cordex. This keeps lists short and reduces calls against your rate limit.

Set a filter

  1. Tab Filters, choose the table or variant in Table (or select it in the list of tables with a permanent filter). It must show Licensed.
  2. In the Builder, select Add condition and choose a column, an operator (Equals, Contains, Begins with, Is one of, Has a value and so on) and a value. Tick Ignore case to match text in any case. With two or more conditions, choose whether rows must match all of them (and) or any of them (or).
  3. The line under the builder shows the exact filter sent to Cordex. For anything the builder cannot express (brackets that mix and with or, or functions such as length), switch to OData text; select a column chip to insert its exact name. A saved filter opens in the builder when the builder can show it exactly, otherwise as OData text.
  4. Test runs the filter at Cordex, reports how many rows match and shows the first 20 of them in a grid (the table's name, Code and Status columns first, then up to nine more). Save tests again and stores it. Remove filter returns the table to the whole dataset.

Filter syntax (OData text)

The builder writes these forms for you. Column names are the Cordex property names and are case-sensitive (Country, not country). Text values go in single quotes; double a quote inside a value ('O''Brien').

PurposeExample
EqualsCountry eq 'AU'
Not equalStatus ne 'retired'
Number rangesListOrder ge 10 and ListOrder lt 20
One of a list (up to 1,000 values)Code in ('AU-NSW','AU-VIC','AU-QLD')
Text contains, case-insensitivecontains(tolower(Display),'fever')
Starts with / ends withstartswith(Code,'AU-') endswith(Display,'virus infection')
Has a value / no valueListingExpires ne null ParentCode eq null
Combine and negateStatus eq 'active' and not (Kind eq 'deprecated')
Yes/No columnsNationallyNotifiable eq true
Taxonomy (GBIF): flora or faunaKingdom eq 'Plantae' Kingdom eq 'Animalia'

Taxonomy and kingdoms. Taxonomy (GBIF) is one dataset for every kingdom. The nine kingdom tables (Animalia, Plantae, Fungi, Chromista, Protozoa, Bacteria, Archaea, Viruses and incertae sedis) are the same dataset with a built-in filter such as Kingdom eq 'Plantae' (flora) or Kingdom eq 'Animalia' (fauna). The built-in filter cannot be removed; a permanent filter you save on a kingdom table is added to it, and the Filters tab shows both.

Also available: or, brackets, toupper, trim, length, indexof, substring and concat. A filter is one line of at most 2,000 characters.

Address (AU). Cordex requires every Address query to pin a postcode, locality code, Pid or Id. A permanent filter on Address must do that (for example Postcode eq '7000'); otherwise Cordex refuses it as too broad.
A record outside the permanent filter does not exist for that table: opening it by link reports that it does not exist within the table's filter.

Variant tables

A variant is a copy of a Cordex table with its own permanent filter, for example Cordex Subdivision NZ beside Cordex Subdivision. It uses the same dataset and the same licence key as the table it copies.

Development environment only. Create variants in your development environment, inside your own unmanaged solution. Never create them in test, UAT or production: that adds unmanaged changes there (see Moving changes between environments).
  1. In your development environment open Cordex Reference Administration, tab Variants, card New variant table.
  2. Enter a Table name, for example Subdivision NZ. The page shows what it will create: the table Cordex Subdivision NZ with logical name mitaa_subdivisionnz (mitaa_ followed by the name in lowercase letters and digits; spaces and other characters are left out).
  3. Choose the Cordex table to copy (Copy of) and your own unmanaged Solution.
  4. Select Create variant and confirm. The page creates the Cordex data source record, the virtual table with the copied table's settings and icon, every mapped column, the All and Active views, the system views and the main form, publishes the table and binds your licence (Validate all). Each step is listed as it completes. A copy of a kingdom table (for example Animalia) keeps the kingdom's filter: the page saves it as the variant's permanent filter.
  5. The page then opens the Filters tab on the new variant. Build its permanent filter there, for example Country, Equals, NZ (see Permanent table filters).
  6. Add the variant to your own app and its site map. Do not add it to the Cordex-Reference app: that app is part of the managed Cordex solution.
  7. Export your solution as managed and import it into test, UAT and production after Cordex-Reference (see Moving changes between environments).

If a step fails, the page stops and lists what it created. Delete those parts from your solution before trying again with the same name.

In test, UAT and production there is nothing to do. The variant arrives with your managed solution, and Cordex Reference finds it because its data source record points at the same Cordex dataset as the table it copies. It is bound to your licence the next time anyone runs Validate all, or by itself when a System Administrator opens any tab of the administration page other than Licences.

The Variants tab lists every variant with the table it copies, its status and licence. Its filter is on the Filters tab and its columns on the Tables tab, as for any Cordex table. To remove a variant, see Remove a variant, filter or view.

Columns from Cordex

Cordex can add properties to a dataset in a new release. Cordex Reference never adds columns by itself; a System Administrator adds the ones wanted, in development.

Development environment only. Adding columns changes the table. Do it in your development environment, inside your unmanaged solution, and move it on with that solution.
  1. Tab Tables, select the table (a Cordex table or a variant). It must show Licensed.
  2. Card Columns from Cordex, select Check Cordex properties. The page lists every property Cordex serves now that has no column on the table, with the column it would create: logical name mitaa_ plus the property name in lowercase, label from the property name.
  3. Tick the properties to add, choose your Solution and select Add selected columns.
  4. The page creates the columns (text up to 4,000 characters, whole number, floating point number or Yes/No, by Cordex type), adds them to the main form's Details section and to the All view, and publishes the table. A field it cannot place on the form (no field of the same type there to copy) is named in the step list; add that one in the form designer.

Remove a variant, filter or view

Development environment only for variants and views. In test, UAT and production they are managed: remove them in development and import the new version of your solution, which removes them there. Unmanaged changes made directly in test, UAT or production stop later solution updates from working properly, because they stay on top of the managed solution and hide its updates.

Variant

  1. Remove the variant from your own app's site map and app components, and publish the app. Dataverse will not delete a table an app still uses.
  2. Tab Variants, Delete on the variant, confirm. The page deletes the table with its views and forms, its Cordex data source record and its Cordex table status row.

A variant whose table was deleted in the maker portal stays in the list as Not installed, because its status row remains. Select Remove leftover to delete that row and any data source record left behind.

Permanent filter

Tab Filters, choose the table, Remove filter, confirm. The table shows the whole dataset again (a kingdom table keeps its built-in filter).

View

Tab Views, choose the table. Views of the table lists its public views; Delete a view and confirm. The page publishes the table. The default view and managed views have no Delete; make another view the default in the view designer first if you want to delete it.

Views and searching

Views tab

Development environment only. Create views in your development environment, in your own unmanaged solution, and move them on with that solution.
  1. Tab Views, choose a Licensed table, name the view and choose your unmanaged Solution.
  2. The column list starts with the columns, widths and sort of the table's default view. Add column adds more; Remove takes one out; drag a row, or choose its Position, to change the order; type a Width in pixels (50 to 1,000). The line under the list summarises the columns in order.
  3. Add conditions (all must match) and choose a sort.
  4. Create and publish view and confirm. The view is checked before it is saved: the provider must translate it and Cordex must accept it within the table's permanent filter. The message reports how many rows match. Refresh the app (Ctrl+F5) to see the view.

Column headings come from each column's display name. The Cordex-Reference app shows every view of each table, so a new view needs no change to the app.

Supported conditions

Column typeOperators
TextEquals, Does not equal, Contains, Does not contain, Begins with, Ends with, Is one of, Has a value, Has no value
Whole number, decimal, floating pointEquals, Does not equal, Greater than, At least, Less than, At most, Is one of, Has a value, Has no value
Yes/NoEquals, Has a value, Has no value
Unique identifierEquals, Does not equal, Has a value, Has no value

Equals and Is one of compare exactly. Contains, Begins with and Ends with ignore case. The same rules apply to views built in the standard view editor and to Advanced find.

Quick Find and lookups

  • Quick Find searches the columns in the table's Quick Find view and matches from the start of the value (coronavirus finds Coronavirus disease (COVID-19)). Start with an asterisk to search anywhere in the value (*covid).
  • Lookups from your own tables to a Cordex table work (many-to-one). The Cordex Id of a row never changes between releases, so a lookup stays valid when Cordex publishes a new release. Also store the code and display as text on your record if you need them for history.

Not supported

  • Joins from a Cordex query to other tables, aggregate queries, date conditions, the _ wildcard and a % in the middle of a pattern.
  • Microsoft limits virtual tables: no Dataverse search, charts, dashboards, auditing, column security or change tracking on the virtual tables themselves.
  • The tables are read only.

Moving changes between environments

Build every change in development and move it to test, UAT and production as a managed solution. Changes made directly in test, UAT or production sit in the unmanaged layer. Microsoft describes it as the top layer of a component, the one that decides how the component behaves, so it masks what later managed imports bring.

What moves in a solution, and what does not

ItemWhere it livesHow it reaches test, UAT and production
Cordex tables, views, forms, the Cordex-Reference appThe Cordex Reference managed solutionInstall or upgrade the Cordex Reference solution. Never edit these in test, UAT or production.
Your views (Views tab)Your own unmanaged solution in developmentExport your solution as managed and import it.
Your variant tables, their data source records, views and formsYour own unmanaged solution in developmentExport your solution as managed and import it after Cordex Reference.
Your app and site map entries for variantsYour own app in your solutionMoves with your solution.
Permanent filter of a variantThe variant's data source record, in your solutionMoves with your solution. Change it in development only; the Filters tab refuses it in a managed environment.
Permanent filter of a Cordex tableThe table's status row (environment data)Set it in each environment on the Filters tab. It makes no unmanaged change. Record it in your release notes.
Security roles Cordex Reference User and Cordex Reference AdministratorThe Cordex Reference managed solutionMove with Cordex Reference. Assign them in each environment; do not edit them.
Read on your variant tablesA security role in your own solutionMoves with your solution. Assign it in each environment.
Licence keysEnvironment dataAdd the keys meant for each environment, then Validate all.
Variant bindingEnvironment dataAutomatic: Validate all, or opening the administration page beyond Licences, binds imported variants to your licence. Nothing to register.

Release steps

  1. Development: make the change in your unmanaged solution (variants, views, your app). Test it.
  2. Export your solution as managed. Keep the unmanaged export as your source.
  3. Test, then UAT, then production: install or upgrade Cordex Reference first if its version changed, then import your managed solution.
  4. In each environment: Licences tab, Validate all. Check that your tables show Licensed and that the views appear.

Importing Cordex Reference can report Data Source secrets are not included in solutions (0x80044818), once for each Cordex data source record, each marked Processed. This is expected and needs no action: Cordex Reference stores no secrets on data source records.

Avoid and remove unmanaged layers

  • Do not use the Views tab, the New variant table card, Columns from Cordex or the app designer on Cordex components in test, UAT or production. The page warns before every change.
  • To check a component: Power Apps, Solutions, open the solution, select the component, Advanced, See solution layers. An Unmanaged layer entry means someone changed it in that environment.
  • To remove it: select that layer and Remove active customizations. Microsoft warns this cannot be undone; the component then behaves as the managed solutions define it.
  • Upgrading from Cordex Reference 1.0.0.3 or earlier: those versions wrote licence keys and filters onto the Cordex data source records, which left an unmanaged layer on each one in test, UAT and production. After upgrading, remove that layer from every Cordex data source record (Remove active customizations), or uninstall Cordex Reference and install the new version. Then run Validate all. Filters you saved stay: they were also kept on the tables' status rows.
  • Production guard: in the Power Platform admin center, the environment's Features settings include Block unmanaged customizations. It blocks unmanaged imports, new components and unmanaged changes to managed components, while still allowing removal of unmanaged layers. Read Microsoft's list of features it affects before you turn it on.

Sources: Microsoft Learn, Solution layers and Block unmanaged customizations.

Security

  • Licence keys are stored in the Cordex Licence table in a secured column. No Cordex role can read it. Administrators add keys through the Custom API mitaa_AddCordexLicence, which writes the key on the server; the page then shows only the last four characters.
  • Every Cordex Custom API requires a privilege on the licence or status table, so users without an administrator role are refused before any code runs. The plug-ins act as the caller, so the caller's own role decides what may change; only the key column is read or written as the system.
  • Each table's status row records which licence covers it; the provider reads that licence's key on the server. Cordex data source records are never written after installation, so licences and filters make no unmanaged changes.
  • The role Cordex Reference User gives Read on the Cordex tables and their data source records only; Cordex Reference Administrator adds the licence and status tables. The provider reads the licence and status rows on the server as the system, so users need no access to them.
  • Pages and scripts in the browser never receive a key. The Administration page calls Custom APIs that run on the server.
  • Plug-in trace lines record whether a key was passed and its length, never the key.
  • Calls to Cordex use HTTPS and carry the key in the X-Cordex-Client-Key header.

Messages and what to do

Message (as users see it)CauseWhat to do
This Cordex dataset is not licensed in this environment. A Cordex Reference administrator adds a Cordex licence key on the Cordex Licences page; the provider then binds it to every dataset the key covers.No valid key covers the table, or the key was removed.Add or validate a licence that covers the dataset (Licences tab). Check the table status on the Tables tab.
This environment is a copy: its Cordex licence was validated in another environment. A Cordex Reference administrator validates the licence again on the Cordex Licences page.The environment was copied or restored from another environment, so the stored key belongs to the source environment.Licences tab, Validate all. Validation stamps this environment and binds the keys again.
The Cordex licence key was not accepted (HTTP 401 or 403, client_key_...)The key bound to the table is unknown, revoked or mistyped at Cordex.Validate the licence; replace the key if it is reported Invalid.
The Cordex licence has expired (HTTP 403, client_key_expired)The licence passed its expiry date.Renew, then Validate.
The Cordex licence does not include this dataset (HTTP 403, domain_not_entitled)The plan changed at Cordex since the last validation.Validate all: the table moves to Not in plan, or to another key that covers it.
This Cordex dataset is not published, or the service root is wrong (HTTP 404)The dataset is not published yet, or a data source record was edited by hand.Check the Cordex release notes. If a data source record was edited, use See solution layers on it and Remove active customizations.
Cordex rate limit reached; retry after N seconds (HTTP 429)All users in the environment share one key's rate limit (1,200 calls per minute per plan; 6,000 for Enterprise).Retry after the stated time. Use permanent filters and filtered default views to reduce calls.
Cordex is unavailable (HTTP 5xx) / Cordex could not be reached / Cordex did not answer within 20 secondsA Cordex outage or a network problem between Dataverse and Cordex.Retry later. Nothing in Dataverse needs to change.
Column X is not in the current Cordex release of T, so it cannot be filtered or sorted.The dataset's current release has no value in that column. Columns are inferred from each release.Remove the column from the filter or sort. The column shows empty in results until a release carries it again.
Condition operator X is not supported on Cordex virtual tables.The view or query uses an operator the provider does not translate (for example date operators, Contains full text, or joins).Use a supported operator (see Views and searching).
The _ wildcard is not supported on Cordex virtual tables. / The pattern '...' is not supported; use text, text%, %text or %text%.A Like pattern with _ or a % in the middle.Use begins with, ends with or contains.
Cordex virtual tables do not support joins to other tables in a query.A view or Advanced find adds a related table.Query the Cordex table on its own. Lookups from your tables to Cordex tables work; joins inside a Cordex query do not.
Cordex sorts on at most four columns.The view sorts on five or more columns.Sort on four columns or fewer.
Condition In on X has N values; Cordex takes at most 1,000.An In list with more than 1,000 values.Split the list or use a permanent filter.
You do not have permission to access these records.The user has no security role with Read on the table.Assign Cordex Reference User (Admin Guide, Give users access). For a variant table, assign the role from your own solution that gives Read on it.
This key is already added (name). Validate that licence instead of adding the key again.The same key exists on another licence row.Use Validate on the existing row.
You do not have access to Cordex Reference administration (on the administration page)The user has no role that can read the Cordex licence table.Assign Cordex Reference Administrator (Admin Guide, Give users access).
Principal user ... is missing prv...mitaa_cordexlicence or prv...mitaa_cordextable privilegeA Cordex Custom API was called by a user without an administrator role. Each Cordex Custom API requires a table privilege.Assign Cordex Reference Administrator.
Licence ... has no stored key. Remove it and add its key again.A licence row has an empty key column.Remove the licence and add its key again on the Licences tab.
A table filter is at most 2,000 characters. / A table filter is one line of OData $filter text.The permanent filter is too long or contains line breaks.Shorten the filter or use in (...) lists.
Cordex rejected the query (HTTP 400, bad_filter: ...)The permanent filter or a view condition is not valid OData for this dataset (for example an unknown column name or wrong case).Fix the filter. Column names are case-sensitive and must match the Cordex property (the Filters tab builder lists them; in OData text mode they are chips).

More detail for each message is in the plug-in trace log (Ops Guide, Monitoring).

Data sources and licences

Cordex Reference stores no reference data in Dataverse. Every row is read from the Cordex Terminology API when a user opens a view, form or lookup. Each dataset stays under its publisher's licence, and your organisation must meet those terms when it uses or displays the data.

TablesSource and licenceNotes
SNOMED CT-AU (with AMT)NCTS; SNOMED CT Affiliate Licence and the Australian National Terminology LicenceYou need your own SNOMED CT Affiliate and NCTS licence to use this content.
Notifiable Disease (AU)Federal Register of Legislation; CC BY 4.0Attribute the Federal Register of Legislation.
LOINCRegenstrief Institute; LOINC licence (no cost)Field names and contents are served unchanged, as the LOINC licence requires. Codes with third-party content carry the owner's notice in EXTERNAL_COPYRIGHT_NOTICE; use of that content is subject to the owner's terms.
ICD-11 MMSWorld Health Organization; CC BY-ND 3.0 IGONo derivative works of the classification.
CDC code sets (CVX, MVX, vaccine groups, VIS, products, NDC, ICD-10-CM, NNDSS)US Government works in the public domainCPT to CVX: CPT content is Copyright American Medical Association.
Address and Address Area (AU)Geoscape via data.gov.au; Open G-NAF End User Licence Agreement
Country, Subdivision, Language, CurrencyUnicode CLDR; Unicode License v3
Time ZoneIANA tz (public domain) and Unicode CLDR
Calling Codelibphonenumber metadata (Apache-2.0) via libphonenumber-js (MIT)
Sex and Gender (AU), Occupation (AU)Australian Bureau of Statistics; CC BY 4.0Occupation is OSCA 2024 v1.0.
EmojiUnicode emoji data; Unicode License v3
UnitBIPM SI Brochure; CC BY 4.0
ElementIUPAC names and symbols
Taxonomy (GBIF) and the nine kingdom tablesGBIF Secretariat, GBIF Backbone Taxonomy; CC BY 4.0One dataset for all kingdoms. Attribute GBIF.

Terms

TermMeaning
Cordex Terminology APIThe licensed web service that serves every dataset.
DatasetOne Cordex domain, for example global/geography/country.
PlanWhat a licence key covers: Clinical, Geography, People, Commerce, Science (with Unit) or Enterprise (everything).
BindingRecording on each table's status row which licence covers it. Data source records are not changed.
Data source recordA record of the Cordex Data Source table that a virtual table points at.
Permanent filterAn OData filter sent with every query: on the table's status row for a Cordex table (an environment setting), on its own data source record for a variant (part of your solution).
Variant tableA copy of a Cordex table, made on the Variants tab in development, with its own data source record and filter. Found and bound automatically in every environment.
Unmanaged layerChanges made directly in an environment, on top of managed solutions. Avoid it outside development.
ReleaseAn approved, versioned publication of a dataset at Cordex. Every row carries the release that served it.