Yes, you should create a DBIx::Class file for each table, including the ones used to just link across, for a many-to-many (Funnily enough, theres a bridge method that creates many-to-many rels for you).
How are the system/role/user tables actually set up? Given a "system", using SQL, how do you find the point_of_contact? That might be the easiest way of translating it to DBIx::Class.
As for the elements, I don't know how they look like in the database either, can you maybe just post your create table statements, and we can go on from there?