It's all covered in the docs [1], one of the points I already
mentioned (require-osd-release), you should have bluestore OSDs and
converted them to ceph-volume before you can adopt them with cephadm
(if you deployed your cluster pre-nautilus).
[1]
from Ceph perspective it's supported to upgrade from N to P, you can
safely skip O. We have done that on several clusters without any
issues. You just need to make sure that your upgrade to N was
complete.
How do you verify if the upgrade was complete?