Common Works 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 for it 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. 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. Allowed characters
Only uppercase characters are allowed. While societies expect that publishers comply with this, they often 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
... (removed) ...
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. Transactions
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 UNC000000UORI N00000000000 N
SPU000000010000000101DMP DMP DEMO PUBLISHING E 00000000000000000199052025000440500004405000 N
SWR0000000100000003W000001 SMITH JOHN JAMES CA0000000000000000039521 025000000000000 N
PWR0000000100000005DMP DMP DEMO PUBLISHING SAAN12345 W000001
OWR0000000100000006W000003 ADAMS AARON CA00000000000000000000050000500005000
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, only a handful of societies accept CWR files submitted by writers.
In these articles, it is 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 in CWR format. 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.