Semesters are configured in semesters.xml, and semester primary keys in common.xml. Semester data is in semesters.xml and semesters.csv.
A semester has a primary key, a season, a year, and classes. The relationship between semester and class is 1:N. In XML, this relationship is represented by each semester element containing its classes. In CSV, each class element contains its semester primary key as a foreign key.
Because classes are configured before semesters, and classes use the semester primary key, the semester primary key must be configured apart from the semesters. For this reason, the semester primary key is configured in common.xml, which is loaded before both classes.xml and semesters.xml. This problem goes away when configuration supports forward references.