Designing a product and want to know the system forms which a user have access to in Dynamics 365? Use the RetrieveFilteredFormsRequest request to identify the same

My customer was having a third party application where they were querying for the system forms and one of the requirement was to find the system forms based on userid. Basically they would have a user guid based on which they need to find all the system forms of type = Main, the user have access to it.

Honestly I haven’t used something like that so far because a requirement never came along. However a bit of search and found this wonderful request which you can use.

RetrieveFilteredFormsRequest request = new RetrieveFilteredFormsRequest();
         request.EntityLogicalName = “account”;
         request.SystemUserId = ((WhoAmIResponse)client.Execute(new WhoAmIRequest())).UserId;
         request.FormType = new OptionSetValue(2); // here pass in appropriate value for Main/ Quick create/ Quick view etc.


        RetrieveFilteredFormsResponse response = (RetrieveFilteredFormsResponse)client.Execute(request);


        var systemForms = response.SystemForms;


        foreach(var form in systemForms)
         {
            Console.WriteLine($”FormId: {form.Id}”);
         }

To get additional details you would need to take the formid and query further for additional details like formxml.

Hope this helps!

Debajit Dutta

(Dynamics MVP)