Common Works Registration File Format

In this article, one of several articles about CWR, the Common Works Registration format will be introduced. Further articles will give you more insight. But, for real understanding, you will have to dig deep.

Before we get into it, several notes.

CWR can not be created manually, specialised software is required. See Catalogue Management Software for details.

Also, you may be interested in this 30-minute video about CWR format. (The second and final part has not yet been released.)

OK. Let’s get technical!

Underlying Format

CWR is based on EDI, a long-obsolete standard for data exchange over 300bps modems from the seventies. (There is a chance that the next version of CWR will also be available as JSON). Right now, EDI-based CWR is a fixed-width text format, and here is a CWR 2.1 example:

HDRPB000000199DMP DEMO PUBLISHING                          01.102019021516052620190215
GRHREV0000102.100000000000
REV0000000000000000THE ONE                                                       DMP000001                00000000            UNC000000Y      ORI                                                   N00000000000                                                   N
SPU000000000000000101DMP      DMP DEMO PUBLISHING                           E 00000000000000000199              052050000441000004410000 N
SPT0000000000000002DMP            050001000010000I2136N001
SWR0000000000000003W000001  SMITH                                        JOHN JAMES                     CA0000000000000000039521 05000   00000   00000 N
SWT0000000000000004W000001  050000000000000I2136N001
PWR0000000000000005DMP      DMP DEMO PUBLISHING                                        SAAN12345     W000001
ALT0000000000000006THE ONE BED                                                 AT
ALT0000000000000007THE ONE DRUMS ONLY                                          AT
ALT0000000000000008THE ONE NO DRUMS                                            AT
ALT0000000000000009THE ONE STING                                               AT
PER0000000000000010THE BAND
REC000000000000001100000000                                                            000000                                                                 DML
ORN0000000000000012LIB                                                            INTERNET       0000DMP DEMO LIBRARY                                                                                                                                                                  0000
REV0000000100000000SECOND BEST                                                   DMP000002                00000000            UNC000000U      ORI                                                   N00000000000                                                   N
SPU000000010000000101DMP      DMP DEMO PUBLISHING                           E 00000000000000000199              052025000440500004405000 N
SPT0000000100000002DMP            025000500005000I2136N001
SWR0000000100000003W000001  SMITH                                        JOHN JAMES                     CA0000000000000000039521 02500   00000   00000 N
SWT0000000100000004W000001  025000000000000I2136N001
PWR0000000100000005DMP      DMP DEMO PUBLISHING                                        SAAN12345     W000001
OWR0000000100000006W000003  ADAMS                                        AARON                          CA00000000000000000000   05000   05000   05000
ALT0000000100000007SECOND PLACE                                                AT
GRT000010000000200000023   0000000000
TRL000010000000200000025

Syntax highlighting and additional information on mouse-over, were created using CWR Tools.

Here is an example of the same data in normalized JSON, something that is quite familiar to contemporary software developers:

{
  "writers": {
      "W000001": {
          "last_name": "Smith",
          "first_name": "John James",
          "ipi_name": "00000000395",
          "pr_society": "21"
      },
      "W000003": {
          "last_name": "Adams",
          "first_name": "Aaron"
      }
  },
  "publishers": {
      "DMP": {
          "name": "DMP Demo Publishing",
          "ipi_name": "00000000199",
          "pr_society": "052",
          "mr_society": "044"
      }
  },
  "albums": {},
  "artists": {
      "A000001": {
          "last_name": "The Band"
      }
  },
  "libraries": {
      "L001": {
          "name": "DMP Demo Library"
      }
  },
  "works": {
      "DMP000002": {
          "work_title": "Second Best",
          "version_type": "original",
          "alternate_titles": [
              {
                  "alternate_title": "Second Place"
              }
          ],
          "writers_for_work": [
              {
                  "controlled": true,
                  "relative_share": "0.50",
                  "writer_id": "W000001",
                  "capacity": "CA",
                  "publishers_for_writer": [
                      {
                          "publisher_id": "DMP",
                          "agreement": {
                              "saan": "SAAN12345",
                              "type": "OG"
                          }
                      }
                  ]
              },
              {
                  "controlled": false,
                  "relative_share": "0.50",
                  "writer_id": "W000003",
                  "capacity": "CA"
              }
          ],
          "live_artists": [],
          "society_work_codes": []
      },
      "DMP000001": {
          "work_title": "The One",
          "version_type": "original",
          "alternate_titles": [
              {
                  "alternate_title": "The One Bed"
              },
              {
                  "alternate_title": "The One No Drums"
              },
              {
                  "alternate_title": "The One Drums Only"
              },
              {
                  "alternate_title": "The One Sting"
              }
          ],
          "writers_for_work": [
              {
                  "controlled": true,
                  "relative_share": "1.00",
                  "writer_id": "W000001",
                  "capacity": "CA",
                  "publishers_for_writer": [
                      {
                          "publisher_id": "DMP",
                          "agreement": {
                              "saan": "SAAN12345",
                              "type": "OG"
                          }
                      }
                  ]
              }
          ],
          "recordings": {
              "R000001": {
                  "isrc": "",
                  "record_label": "DML",
                  "artist_id": "A000001"
              }
          },
          "source": {
              "type": "library",
              "library_id": "L001",
              "cd_identifier": "INTERNET"
          },
          "live_artists": [],
          "society_work_codes": []
      }
  }
}

The two works represented here contain only very basic data, most notably only the data about a single original publisher for a controlled writer. In reality, contemporary CWR files often also contain data about several original publishers for each work, administrators, and many sub-publishers with different society affiliations for their respective territories, data on agreements and different share splits for different territories. CWR files with over 100 lines per work are quite common these days, and 1000+ lines are no longer exceptions.

But it is not the size that makes CWR complicated, nor this obsolete format. It is the complexity of validation rules, which differ from one society to the next and not all are documented. While a single CWR file should work everywhere, there are edge cases when the rules by different societies are conflicting.

If you choose to do it the hard way, you should go to https://www.cisac.org and search the documents for CWR. The proper overview is in the article about CWR Documentation.