Resource leveling is not always enough to solve the over allocation problem. Consider a project with a single activity of 10 days. This activity needs 1,000 hours of a resource to be performed. That is, 100 hours a day (linearly, for simplicity’s sake). If the max units/time (team size) for this resource are only 80 hours/day then no matter what you do by way of leveling, over allocation of 20 hours/day would always exist … UNLESS you either;
1. Increase the activity’s duration to 1,000 / 80 = 12.5 (~13) days, or
2. Increase team size to have 100 hours available each day.