Condition-based maintenance (CBM) is an effective maintenance strategy to improve system performance while lowering operating and maintenance costs. However, most research on CBM focuses on single-component systems. Limited research has considered CBM for multi-component systems. Multi-component condition-based maintenance, which joins the components' stochastic degradation processes and the combinatorial maintenance grouping problem, remains an open issue in the literature. In this paper, we study the CBM optimization problem for multi-component systems. We first develop a multi-stage stochastic integer model with the objective of minimizing the total maintenance cost over a finite planning horizon. We then investigate the structural properties of a two-stage model. Based on the structural properties, two efficient algorithms are designed to solve the two-stage model. Algorithm 1 solves the problem to its optimality and Algorithm 2 heuristically searches for high-quality solutions based on Algorithm 1. Our computational studies show that Algorithm 1 obtains optimal solutions to the majority of test cases in a reasonable amount of time and Algorithm 2 can find high-quality solutions quickly.The multi-stage problem is solved using a rolling horizon approach based on the algorithms for the two-stage problem. KEYWORDS Condition-based maintenance, multi-component systems, multi-stage stochastic integer programming, endogenous uncertainty arXiv:1907.01031v1 [math.OC] 1 Jul 2019