You would have to start with taking the UUID generation database side. So in the JPA file eliminate the line with @JmixGeneratedValue. This will prevent Jmix from generating the default uuid value (Note, I don’t know how this will impact Jmix, generally application layers have to manage this for things like offline persistence, but fully online applications don’t usually bother too much).
The next step I would take is creating a separate database user for each application to manage permission structures for the application (I know it is usually the same for each application, but experience has taught me the separate users makes debugging way simpler, just be careful of the table permissions structures).
@JmixGeneratedValue
@Column(name = "uuid", nullable = false)
@Id
private UUID id;
Now that the databse is directly managing the UUID creation there should be less collision checking because the database is doing the uuid generation. From there I’m at the end of my knowledge, but if you try and then post any future issues we can try and debug together from there.
Edit. I forgot to address the liquidbase changelog issue. Typically you address this be adding the database as a seperate database store, and them managing users through ldap instead of through the database. This is because liquidbase is more configurable when utilizing it as an additional data source. If this is not possible I’d recommend using one schema for the users and then a seperate schema for the data so that jmix recognizes it as seperate sources and the database can still manage cross schema data management.
Thank you,
Oran