rfernandez Further investigation took me to discover that the value that the Form state will take as valid in the case of the relation field, is the id of Masive which is the number 2, and not the text. However in the field I retrieve the text and that is what is shown in the form.
Could this be something to improve/correct?
A relationship input field is there to fill a relationship value (which is an ID). Using a name, or any non-ID value, as the value of an relationship field would not be helpful, as relationship fields are there to resolve records; names do not need to be unique, so filters like F8 = Masiva cannot guarentuee that the correct record is selected.
What you actually want, is to check, if the correct record is selected. For records that serve app logic (like for showing/hidding stuff on your form), you should use presets - which you probably do already. Once you have created presets, you can check for them in the filters directly (F8 = preset record: Masiva). This filter condition guarentuees that the correct record is selected, regardless of names (which could be renamed or exist multiple times).
rfernandez So, I know it is a kind of odd/defying situation, but I will really appreciate suggestions on any workaround or creative solution to avoid having to do a dirty patch
It´s a basic requirement - not odd at all. You just don´t know how to address it yet. If you have an 1:1 extended relation on the same form, but no values are set as default or by the user, the relation record will not be created. If you need the inputs filled in some cases, you use form states to make the relevant fields required in these cases.
This of course only works, if the relations are 100% cleanly separated. As soon as you fill a single value for an extended relation, its record will need to be created. As long as your form states are cleanly making stuff optional / required, based on what the user should fill out, you will not create unnecessary records.
Btw. even using form states, a required field will show a message and block saving if left empty - even if the field is not required by default.