Each Corda state references a specific notary, and can only be spent using that notary. Often, it is useful to transfer a state to a new notary, without otherwise modifying it:
The notary it is assigned to is being decommissioned (e.g. due to a security weakness, because it has accumulated too many spent states and performance has degraded, or because the notary operator wants to shift to a new implementation)
There are several states that need to be included in the same transaction, but they point to different notaries, and the notary must be harmonised before they are spent
A new notary must be used for business or legal reasons (e.g. upgrading to a more secure notary, upgrading to use a BFT notary, changing notary for data residency reasons)
To allow this, Corda provides the concept of a notary change transaction, which repoints one or more states to a new notary while marking them as consumed on the existing notary.
However, the node operator must currently provide their own CorDapp to conduct notary change transactions. There is a `NotaryChangeFlow` included in the platform, but it is not startable by RPC. Additionally, it does not support moving several states to a new notary at once.
We shall give the node operator the ability to shift one or more states to a new notary, without having to write custom CorDapp code.