Using Portals we have created a registration form, which will include all information we need for the customer record in DataVerse.

Once the form is submitted a contact record is created in DataVerse. Using a Cloud Flow we create an approval on this creation before assigning the record a contract/deal.

Because of legal reasoning around the power of attorney we have implemented, we have to manually approve each contact as off now. But this is a one-time process for each customer after they are validated.
Once they are approved we update the contact with a new status, and as of that, we assign a contract.