Common Works Registration (CWR) File Format

In this article, one of several articles about CWR, the Common Works Registration format will be covered. CWR can not be created manually, specialised software is required.

If you are developing software, then this is the right article for you.

If you are looking for CWR-capable software, instead of technical explanations, take a look at Django-Music-Publisher. It has great documentation and video tutorials. And it is free.

If you already use commercial software that outputs CWR, and you ran into problems, consider using our Visual CWR Validator.

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. I will not go into reasons why CISAC still insists on it, even plans to release at least two more versions. It is a fixed-width text format, and here is a CWR 2.1 example created form made-up data in DMP.

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

Please note that CWR 2.2 is a dead-end and CWR 3.0 is not in real use yet. More in the article about CWR Versions.

Here is an example of the same data in normalized JSON (created from the above file with our free CWR 2.1 parser, 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. The tools on this site can help in the process of figuring thigs out. They are divided into the free tools, development tools and commercial services.

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.