There are flat paints that are made to go over semigloss paint.
Many inexpensive flat paints will peel almost immediately when laid
over semigloss. The most common solution is to roughen the surface
of the semigloss (sandpaper, sandblasting, steel wool, or trisodium
phosphate). The actual requirement is to remove alkyds which
migrate to the surface of some semigloss and gloss paints. The
alkyds make it impossible for latex or acrylic to bond to the
surface underneath. You also have to remove buildup of dirt,
mildew, etc.
Most primers are suitable for recoating semigloss. Read the
label. A layer of primer followed by your flat paint is generally
the best solution if the surface is relatively clean. Benjamin
Moore Fresh Start interior / exterior acrylic primer is one example
of a good primer for this application.