One of the basic challenges is that queue types are chosen by and transparent to the client.
From
https://www.rabbitmq.com/tutorials/amqp-concepts.html: "AMQP 0-9-1 is a programmable protocol in the sense that AMQP 0-9-1 entities and routing schemes are primarily defined by applications themselves, not a broker administrator. Accordingly, provision is made for protocol operations that declare queues and exchanges, define bindings between them, subscribe to queues and so on."
All the queue types, aside from streams, do have lots of commonalities. But, it's not as if there is a single queue abstraction and whether it's classic or quorum underneath is an implementation detail of the broker. Therefore changing queue types can't be guaranteed to be a non-breaking change for all clients. We have worked to bring feature parity, to the extent possible, to quorum queues from mirrored classic queues so that is possible for the maximal number of user to upgrade. But, there are also practical considerations, such as what should happen to queue availability during a queue type migration, if the magic button existed? An empty queue would certainly be the easiest (and quickest) but a full queue would need to either be "paused" during the migration, or might need something like a temporary internal federation. A should a network partition occur during migration, things get even more complicated.
Given that a number of the possible tradeoffs worth making during an upgrade might be specific to an application, it's a good idea to give some though to your own upgrade plan. The more that users can share, the greater likelihood that common cases will become evident, and may increase the chances that any tools possibly build to ease or automate migration will apply to the greatest number of RabbtMQ users.