Main Form inside other Main Form

Form component with Microsoft Dynamics CRM platform

Microsoft has been doing a great job when it comes to user experience performance, for all of those who have worked with CRM since the very beginning we can now say there are multiple ways to capture information without opening lots of windows or navigating away from the main form, that is in the past, now we have

  1. Form Dialogs

This was released on January 29th, 2020, this enables consultants to show a window with the main form on top of the previous screen, this also helps users not to experience a Refresh on the screen, which all of us know is a killer when working on web forms, but this one is still a window that opens on top of your page

This has been on the system for many years, but it only offers a read-only mode

But now we have this incredible feature called FORM COMPONENT that is on the market and help us to edit a record inside another record, this is just an example of how it will look like, we will go step by step on how to enable it.

In this scenario we have the Case Entity and other entity called Product Registration, we want to edit the Product Registration details without leaving the Case Form, so the result will be like this.

At the first sight you may say this is one form, but let me explain how you can embed a main form inside another main form

Before we get into how, we will check what we need to implement it:

  1. Step one is to get the Form Id you want to embed, in our case Product Registration Form.

a. You can go to a specific solution and open the form you want to embed.

b. Once you get the Form Id you need to open the Main Form where you want to embed the Product registration form, in our scenario the entity is Case, this is a very important step because you can only add the Form Component from the Classic Editor.

c. Once you get the Case Form, go to the section you want to have the Product Registration Main Form and in my scenario, I decided to add two times the Product Registration Lookup field, one for selecting the value and/or creating a new record, the second one is to display the Main Form.

d. Once you added the second lookup, double click on the control and navigate to the Controls tab, Click on Add Control.

e. On the new window search for Form Component Control and click Add.

f. After this, from the Form Component Control property section, click on the pencil next to the Forms property. (your property should be empty the first time)

g. In the next window you will have two options: Bind to a static value and Bind to a value on a field, you have to choose Bind to a static value.

In that property is where the magic happens

You need to copy the following fetch XML part, of course, first, you need to update the GUID with your Form Id and the name of the entity you are using in this case from the Product Registration entity

Text version:

 <QuickForms>

                   <QuickFormIds>

                                       <QuickFormId entityname=”your entity name”>Your Form ID</QuickFormId>

                   </QuickFormIds>

</QuickForms>

h. After this, save everything, Publish your form and you are ready to show your main form inside the Case Main Form and also update information directly from the Case form.

i. In case your form does not show up when you select the value on the lookup, please check that the form you are using is also included in your model-driven app

LIMITATIONS

Microsoft has defined some limitations for this component, so please be aware of these limits, you can check them here

Here are some of them that I consider important:

  1. We can only use Main Forms on the Component Control, it means we can not use quick views, quick create.
  2. Using a Main Form that uses a BPF (Business Process Flow) on a Component Form is not supported, you can expect odd issues if you use it.
  3. You can not embed a Main Form using a Component Control that has another Main Form inside using a Component Control.

Thanks, and I hope this can help you save time when you are designing your forms and trying to increase the effectiveness of user adoption.