Common Work Registration Documentation
In the previous article, a simple CWR file was shown, together with a JSON file containing the same data. This article picks up from there and introduces the official documentation while explaining CWR in more detail.
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, CWR 3.0 and CWR 3.1.
The official CWR documentation is extremely technical, so this article must be as well, as it is targeting the same audience – software developers.
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.
Only uppercase characters are allowed. While societies expect that publishers comply with this, they 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).
Headers and Trailers
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 its own list of fields, which is defined in the Functional Specification (Version 2.1 Rev.8.
Theoretically, NWR/REV transactions require 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 acknowledgement 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.