The copy set must be marked as valid for it to be approved.
To make the copy set valid, you can either execute the generatePairings function, which will attempt to find a target automatically based on pools, or you can execute the recreateCopyset command, which will allow you to specify a target yourself. When the copy set is valid, it can be approved.