Can you give more information?
I think that you mean “module” is equal to entity in domain model right? If it is you can use inheritance and associations between different modules:
Generalization is mainly used when you want to inherit the logic and the behavior of the generalized entity. Use inheritance as little as possible (only when it is the best or only solution), because of performance. Performance will reduce due to extra committing to the database. Further, when commits are done in bigger batches you will be confronted with both the batch commit performance issue and the issue of commits to the different tables of the database.
Avoid inheritance over more than 2 levels. This can reduce performance through complex joins on database. This will also make it confusing when creating complex business logic and validation rules. It will become difficult to oversee implications of changes to the domain model when a lot of generalization is used.