Versioning does not currently support the versioning of object types with compound keys: $ p4 print \ //core-platform/dev/src/com/arsdigita/versioning/Adapter.java#6 | grep -v "edit change" | head -n 203 | tail -n 9 private static Types getType(Property prop) { Assert.exists(prop, Property.class); DataType dataType = prop.getType(); if ( dataType.isSimple() ) { return Types.getType((SimpleType) dataType); } else { throw new Error("not implemented for compound types yet"); } } In other words, if you have something like this object type UserGroupLink { Date[1..1] created = join ... object key (user, group); } association { UserGroupLink[0..n] groups = join ... User[1..1] user = join ... } association { UserGroupLink[0..n] users = join ... Group[1..1] group = join ... } and you want to version instances of the UserGroupLink object type, versioning will throw the error shown above. This is because the object key of the UserGroupLink is of type (User, Group). This is not currently supported. (Keys of the type (BigInteger, BigInteger) or some such *are* supported.) After talking to Rafi last night, I get the impression that Scott has also run into the need to deal with compound types in much the same way that versioning has to deal with them. There may be other ways for Scott to solve problems he ran into. However, if we do end up putting some sort of support for serialization of compound types into publishing, any such work would probably have to be coordinated with similar work on versioning. See also https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=103242
stale