Thanks for tips. For now most comfortable was to use JavaScript in attributeOnChange on form when some required field is changed:
var Sdk = window.Sdk || {};
(function () {
this.attributeOnChange = function (executionContext) {
var formContext = executionContext.getFormContext();
var primaryname = formContext.getAttribute("cr309_primaryname").getValue();
if(primaryname==null){
var chars = ["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"];
var str = "";
for(var i=0;i<36;i++) {
var str = str + ((i == 8 || i == 13 || i == 18 || i == 23) ? "-" : chars[Math.floor(Math.random()*chars.length)]);
};
formContext.getAttribute("cr309_primaryname").setValue(str);
}
}
}).call(Sdk);