There are a couple of things you can do in this situation, all depending on the state/set up of your application.
If you are using XStream to de-/serialize your events, you can simply create aliases for the payload types.
I’d like to refer to the XStream GitHub page on how to approach this.
If you are using Jackson for the de-/serialization of your event messages, you could go the route of providing your own dedicated implementation of the
JacksonSerializer and overriding the
JacksonSerializer#resolveClassName(SerializedType) function. There you can specify how you’d want your payload types to be adjusted in certain scenarios.
See this section in the reference guide as well for some insights in influencing the serialization process.
If both of those aren’t an option at this point, you can also implement very simple upcasters which only upcast the payload-type of a given Event Message.
I hope this clarifies some of your concern Benjamin!