public async Task <List <JObject> > GetExportableGroupPolicies()
        {
            // List for exported admx templates
            List <JObject> administrativeTemplates = new List <JObject>();

            // Process Administrative Templates
            var gpos = await graphIntune.GetGroupPolicyConfigurationsAsync();

            foreach (GroupPolicyConfiguration gpo in gpos)
            {
                // 2. Configured settings
                var values = await graphIntune.GetGroupPolicyDefinitionValuesAsync(gpo.Id);

                JObject administrativeTemplate = JObject.FromObject(gpo);
                JArray  settings = new JArray();

                // 3. Configured Values
                foreach (GroupPolicyDefinitionValue value in values)
                {
                    var groupPolicyDefinition = await graphIntune.GetGroupPolicyDefinitionValueAsync(gpo.Id, value.Id);

                    var res = await graphIntune.GetGroupPolicyPresentationValuesAsync(gpo.Id, value.Id);

                    JObject jObject = new JObject
                    {
                        // Link setting to field
                        { "*****@*****.**", $"https://graph.microsoft.com/beta/deviceManagement/groupPolicyDefinitions('{groupPolicyDefinition.Id}')" },
                        { "enabled", value.Enabled }
                    };

                    JArray jArray = new JArray();

                    // We need a type cast to access value property of GroupPolicyPresentationValue
                    foreach (GroupPolicyPresentationValue presentationValue in res)
                    {
                        JObject val = new JObject
                        {
                            { "@odata.type", presentationValue.ODataType }
                        };

                        if (presentationValue is GroupPolicyPresentationValueBoolean)
                        {
                            val.Add("value", ((GroupPolicyPresentationValueBoolean)presentationValue).Value);
                        }
                        else if (presentationValue is GroupPolicyPresentationValueDecimal)
                        {
                            val.Add("value", ((GroupPolicyPresentationValueDecimal)presentationValue).Value);
                        }
                        else if (presentationValue is GroupPolicyPresentationValueList)
                        {
                            JArray valueList = new JArray();

                            foreach (KeyValuePair valueListEntry in ((GroupPolicyPresentationValueList)presentationValue).Values)
                            {
                                JObject valueEntry = new JObject
                                {
                                    { "name", valueListEntry.Name },
                                    { "value", valueListEntry.Value }
                                };

                                valueList.Add(valueEntry);
                            }

                            val.Add("values", valueList);
                        }
                        else if (presentationValue is GroupPolicyPresentationValueLongDecimal)
                        {
                            val.Add("value", ((GroupPolicyPresentationValueLongDecimal)presentationValue).Value);
                        }
                        else if (presentationValue is GroupPolicyPresentationValueMultiText)
                        {
                            JArray valueList = new JArray();
                            ((GroupPolicyPresentationValueMultiText)presentationValue).Values.ForEach(stringValue => valueList.Add(stringValue));
                            val.Add("values", valueList);
                        }
                        else if (presentationValue is GroupPolicyPresentationValueText)
                        {
                            val.Add("value", ((GroupPolicyPresentationValueText)presentationValue).Value);
                        }
                        // Binds configured value to settings id
                        val.Add("*****@*****.**", $"https://graph.microsoft.com/beta/deviceManagement/groupPolicyDefinitions('{groupPolicyDefinition.Id}')/presentations('{presentationValue.Presentation.Id}')");
                        jArray.Add(val);
                    }
                    jObject.Add("presentationValues", jArray);
                    settings.Add(jObject);
                }

                administrativeTemplate.Add("configuredSettings", settings);
                administrativeTemplates.Add(administrativeTemplate);
            }

            return(administrativeTemplates);
        }