Common Work Registration Format Documentation

In the previous article, a simple CWR file was shown, together with a JSON file containing the same data. It ended with a tip that the Functional Specification is the most important document in the set. This is in contrast what societies usually say, so it does deserve an explanation.

Registration of musical works should really be a simple thing. There is no good reason why it would have to be so complicated, but it obviously is. I will not rant here, but instead, give a practical introduction to the official documentation. While this refers to CWR 2.1, the only version in world-wide use, it applies to CWR 2.2 as well, and pretty much also to CWR 3.0.

Please do bear in mind that the official CWR documentation is extremely technical, so this article must be as well, as it is targeting the same audience – software developers.

Structure

Data in CWR is in fields of fixed width that are combined in records of different types. Records are “CRLF delimited”, so effectively rows with Windows line endings. Per specification only uppercase characters are allowed. While societies expect that publishers comply with this, the do use lowercase characters in their responses.

To make things even more complicated, there are different rules on allowed characters for different fields. (See Standards and Rules working group CIS character set).

There are four types that are file and group header and trailer:

  • HDR – file header
  • TRL – file trailed
  • GRH – group header
  • GRT – Group trailer

Here is what they look like:

HDRPB000000199DMP DEMO PUBLISHING                          01.102019021516052620190215
GRHREV0000102.100000000000

... (removed) ...

GRT000010000000200000023   0000000000
TRL000010000000200000025

A file can have one or more groups. Each group has a type and it can only hold transactions of this type. There can only be one group of each type. While specification defines quite a lot of transaction types, only three are in wide use:

  • NWR – New Work Registration
  • REV – REVison of an existing registration
  • ACK – Acknowledgement

NWR and REV are created by publishers and sent to societies, while ACKs are sent in the opposite direction. In CWR 3.x, NWR and REV have been merged into a single type – WRK.

Here is an example of one NWR transaction:

NWR0000000100000000SECOND 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

Within a group, all records have the same beginning, three characters for record type (NWR, SPU, etc.), then 8 digits that define a transaction (in this case 00000001, which means this is the second transaction in the group), and then 8 digits for the record within the transaction (in this case from 00000000 to 00000007). Every type has it own list of fields, which is defined in the Functional Specification (Version 2.1 Rev.7, Version 2.2 Rev.1).

Theoretically, NWR/REV transactions need only three records, the NWR/REV header, one SWR and one SWT record, for registration by a sole writer who has no original publisher. However, I do not know that any society accepts CWR files submitted by writers. For the rest of this and related articles, it will be presumed that a publisher is registering works. In that case, minimal registration has the following records: NWR/REV, SPU, SPT, SWR, SWT, PWR. For details, please consult the Functional Specification for these record types.

The above example is only slightly more complex. This is an original work called Second Best, there are two writers, with only one (Smith) being “controlled” by DMP Demo Publishing, while the other (Adams) is not and the publisher for this writer is not specified. And there is also the alternate title Second Place.

Many fields, for example ORI in the NWR record is a shorthand value, and the human-readable version can be found in the CWR Lookup Tables, in this case, “Original” from Musical Work Distribution Category table.

Once the file is sent to society, they are supposed to return an acknowledgment file, which is also a CWR. As mentioned earlier, the transaction type in question is ACK. ACK transactions have this header row, followed by records from the registration, sometimes intertwined with MSG records with error messages, see CWR error messages.

Ahh, yes, and there is a User Manual. After a decade and a half of dealing with CWR, I have never seen it helped anyone with anything. It does not help software developers, and it is also not clear what “users” are users of.

I think I will just add an article on delivery and together with this and the previous article, it will be far more informative. And when it comes to user manuals for users of publishing software, have a look at one of mine.