We consider the problem of planning preventive maintenance and overhaul for modules that are used in a fleet of assets such as trains or airplanes. Each type of module, or rotable, has its own maintenance program in which a maximum amount of time/usage between overhauls of a module is stipulated. Overhauls are performed in an overhaul workshop with limited capacity. The problem we study is to determine aggregate workforce levels, turn-around stock levels of modules, and overhaul and replacement quantities per period so as to minimize the sum of labor costs, material costs of overhaul, and turn-around stock investments over the entire life-cycle of the maintained asset. We prove that this planning problem is strongly NP -hard, but we also provide computational evidence that the mixed integer programming formulation can be solved within reasonable time for real-life instances. Furthermore, we show that the linear programming relaxation can be used to aid decision making. We apply the model in a case study and provide computational results for randomly generated instances.