{"id":25609,"date":"2020-11-18T11:05:02","date_gmt":"2020-11-18T11:05:02","guid":{"rendered":"https:\/\/www.inogic.com\/blog\/?p=25609"},"modified":"2023-09-08T13:01:15","modified_gmt":"2023-09-08T07:31:15","slug":"use-of-json-type-web-templates-in-powerapps-portals","status":"publish","type":"post","link":"https:\/\/www.inogic.com\/blog\/2020\/11\/use-of-json-type-web-templates-in-powerapps-portals\/","title":{"rendered":"Use of JSON Type Web Templates in PowerApps Portals"},"content":{"rendered":"<h1><strong>Introduction<\/strong><\/h1>\n<p style=\"text-align: justify;\">Microsoft PowerApps Portals provide us the configuration surface which allows users to add forms to collect data in the portal without custom development. Web Template is a Power Apps entity (adx_webtemplate), included with Power Apps portals, that is used to store template source content. A web template will generally contain Liquid for dynamic content rendering and is the central entity used to integrate Liquid templates with the rest of the Power Apps portals system.<\/p>\n<p style=\"text-align: justify;\">While the most common use cases for Web Templates will be to render HTML, rendering the entire response (by deselecting\u00a0<strong>Use Website Header and Footer<\/strong>) gives you the option of rendering any text-based format you choose. This is where the\u00a0<strong>MIME Type<\/strong> attribute of Web Template becomes relevant. When a Page Template that does not use the website header and footer is rendered, the HTTP response Content-Type header will be set to the MIME type of the associated Web Template. (text\/HTML will be used if no MIME Type is provided.).<\/p>\n<p style=\"text-align: justify;\">In this blog, we will see how we can create a Web Template with <strong>application\/jsonMIME Type <\/strong>to get data using FetchXml and how we can retrieve that JSON data through Ajax request in the script.<\/p>\n<p style=\"text-align: justify;\">Here, we will take the example of filtering <strong>Account<\/strong> lookup (which is rendered as a dropdown) based on different <strong>Relationship Types <\/strong>field value. So, to retrieve <strong>Account<\/strong> entity data we will configure JSON type Web Template and to get the data based on different <strong>Relationship Types <\/strong>field value we will require to pass specific Relationship Type to Web Template through <strong>query string parameter<\/strong>.<\/p>\n<p>Below are the configurations steps required to retrieve data using JSON type Web Templates,<\/p>\n<p><strong>1.<\/strong>\u00a0Configure <strong>Web Template<\/strong> with <strong>MIME Type = application\/json<\/strong>. Then add FetchXml and code to generate JSON of retrieved data in <strong>Source<\/strong> field of the Web Template as per requirement. For reference find below screen clip,<\/p>\n<h2><u>Get Account JSON <strong>Web Template<\/strong><\/u>:<\/h2>\n<p><a href=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-1-1.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter wp-image-25623 size-full\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-1-1.png\" alt=\"Use of JSON Type Web Templates in PowerApps Portals\" width=\"591\" height=\"476\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-1-1.png 591w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-1-1-300x242.png 300w\" sizes=\"(max-width: 591px) 100vw, 591px\" \/><\/a><\/p>\n<p>Below is the sample code to retrieve Account data using FetchXml and generate JSON of retrieved data which we have added in <strong>Source<\/strong> field of <strong>GetAccountJSON<\/strong> Web Template:<\/p>\n<p>{% fetchxml accounts %}<\/p>\n<p>&lt;fetchversion=&#8221;1.0&#8243;output-format=&#8221;xml-platform&#8221;mapping=&#8221;logical&#8221;distinct=&#8221;false&#8221;&gt;<\/p>\n<p>&lt;entityname=&#8221;account&#8221;&gt;<\/p>\n<p>&lt;attributename=&#8221;name&#8221;\/&gt;<\/p>\n<p>&lt;attributename=&#8221;primarycontactid&#8221;\/&gt;<\/p>\n<p>&lt;attributename=&#8221;telephone1&#8243;\/&gt;<\/p>\n<p>&lt;attributename=&#8221;accountid&#8221;\/&gt;<\/p>\n<p>&lt;orderattribute=&#8221;name&#8221;descending=&#8221;false&#8221;\/&gt;<\/p>\n<p>&lt;filtertype=&#8221;and&#8221;&gt;<\/p>\n<p>&lt;conditionattribute=&#8221;customertypecode&#8221;operator=&#8221;eq&#8221;value=&#8221;{{request.params[&#8216;relationshiptype&#8217;]}}&#8221;\/&gt;<\/p>\n<p>&lt;\/filter&gt;<\/p>\n<p>&lt;\/entity&gt;<\/p>\n<p>&lt;\/fetch&gt;<\/p>\n<p>{% endfetchxml %}<\/p>\n<p>{% if accounts.results.entities.size &gt; 0 %}<\/p>\n<p>{<\/p>\n<p>&#8220;results&#8221;:<\/p>\n[<\/p>\n<p>{% for account in accounts.results.entities %}<\/p>\n<p>{<\/p>\n<p>&#8220;name&#8221;:\u00a0 &#8220;<strong>{{<\/strong>account.name<strong>}}<\/strong>&#8220;,<\/p>\n<p>&#8220;id&#8221;: &#8220;<strong>{{<\/strong>account.accountid<strong>}}<\/strong>&#8221;<\/p>\n<p>}<\/p>\n<p>{% unless forloop.last %},{% endunless %}<\/p>\n<p>{% endfor %}<\/p>\n<p>]\n<p>}<\/p>\n<p>{% else %}<\/p>\n<p>No data found.<\/p>\n<p>{% endif %}<\/p>\n<p>In above sample code, <strong>{{request.params[&#8216;relationshiptype&#8217;]}}<\/strong>is added to get relationship type from query string parameter. And in the same way, we can pass multiple parameters and use them in FetchXml.<\/p>\n<p><strong>2.<\/strong> Create <strong>Page Template <\/strong>record to get account JSON and then set <strong>GetAccountJSON <\/strong>web template in <strong>Web Template<\/strong> field of Page Template. Also, uncheck the <strong>Use Website Header and Footer<\/strong> checkbox of Page Template as shown below,<\/p>\n<h2><u>Get Account JSON <strong>Page Template<\/strong><\/u>:<\/h2>\n<p><a href=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-2.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter wp-image-25624 size-full\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-2.png\" alt=\"Use of JSON Type Web Templates in PowerApps Portals\" width=\"1128\" height=\"506\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-2.png 1128w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-2-300x135.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-2-768x345.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-2-1024x459.png 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-2-660x296.png 660w\" sizes=\"(max-width: 1128px) 100vw, 1128px\" \/><\/a><\/p>\n<p><strong>3.<\/strong> After that create <strong>Web Page <\/strong>record and set <strong>Get Account JSON<\/strong> Page Template in Web Page as shown below. Also, the <strong>Partial URL<\/strong> will be useful to retrieve JSON.<\/p>\n<h2><u>Get Account JSON <strong>Web Page<\/strong><\/u>:<\/h2>\n<p><a href=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-3.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter wp-image-25625 size-full\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-3.png\" alt=\"Use of JSON Type Web Templates in PowerApps Portals\" width=\"1123\" height=\"500\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-3.png 1123w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-3-300x134.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-3-768x342.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-3-1024x456.png 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-3-660x294.png 660w\" sizes=\"(max-width: 1123px) 100vw, 1123px\" \/><\/a><\/p>\n<p><strong>4.<\/strong> Create <strong>Entity Permission<\/strong> for the respective entity and add appropriate <strong>Web Role<\/strong> in that entity permission to be able to read the respective entity records. In this example, we will create entity permission for <strong>Account<\/strong> For reference find below screenshot,<\/p>\n<h2><u>Account Entity Permission<\/u>:<\/h2>\n<p><a href=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-4.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter wp-image-25626 size-full\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-4.png\" alt=\"Use of JSON Type Web Templates in PowerApps Portals\" width=\"1120\" height=\"526\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-4.png 1120w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-4-300x141.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-4-768x361.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-4-1024x481.png 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-4-660x310.png 660w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" \/><\/a><\/p>\n<p>After all the above configurations, we will be able to retrieve the data from <strong>JSON <\/strong>type <strong>Web Template<\/strong> using Ajax request in script code. So, we will add the below code in the Custom JavaScript section of <strong>Entity Form<\/strong> to retrieve <strong>Account<\/strong> data from JSON type Web Template and bind retrieved data in <strong>Account<\/strong> lookup,<\/p>\n<h2><u>Entity Form<\/u>:<\/h2>\n<p><a href=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-5.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter wp-image-25627 size-full\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-5.png\" alt=\"Use of JSON Type Web Templates in PowerApps Portals\" width=\"1134\" height=\"528\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-5.png 1134w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-5-300x140.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-5-768x358.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-5-1024x477.png 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-5-660x307.png 660w\" sizes=\"(max-width: 1134px) 100vw, 1134px\" \/><\/a><\/p>\n<p><u>Code<\/u>:<\/p>\n<p>$(function () {<\/p>\n<p>\/\/Get account data<\/p>\n<p>getAccountData();<\/p>\n<p>\/\/Execute on relationship type change<\/p>\n<p>$(&#8216;#new_relationshiptype&#8217;).change(function () {<\/p>\n<p>try {<\/p>\n<p>\/\/Get account data<\/p>\n<p>getAccountData();<\/p>\n<p>} catch (e) {<\/p>\n<p>console.log(&#8220;onChangeOfRelationshipType :: &#8221; + e.message);<\/p>\n<p>}<\/p>\n<p>});<\/p>\n<p>\/\/Function to get account data<\/p>\n<p>function getAccountData() {<\/p>\n<p>var webTemplateURL = &#8220;&#8221;;<\/p>\n<p>var relationshipType = &#8220;&#8221;;<\/p>\n<p>var accountName = &#8220;&#8221;;<\/p>\n<p>var accountId = &#8220;&#8221;;<\/p>\n<p>var accountCollection = null;<\/p>\n<p>try {<\/p>\n<p>\/\/get selected relationship type<\/p>\n<p>relationshipType = $(&#8220;#new_relationshiptype&#8221;).val();<\/p>\n<p>\/\/Clear account field<\/p>\n<p>$(&#8220;#parentcustomerid&#8221;).empty();<\/p>\n<p>\/\/Add empty option in the account dropdown<\/p>\n<p>$(&#8220;#parentcustomerid&#8221;).append(&#8216;&lt;option value=&#8221;&#8221; label=&#8221; &#8220;&gt;&lt;\/option&gt;&#8217;);<\/p>\n<p>\/\/Validate relationship type<\/p>\n<p>if (!isValid(relationshipType)) { return; }<\/p>\n<p>\/\/Web tempalte url to retrieve account url<\/p>\n<p>webTemplateURL = &#8220;\/getaccountjson\/?relationshiptype=&#8221; + relationshipType + &#8220;&#8221;;<\/p>\n<p>\/\/Request to custom page to get account data in json format<\/p>\n<p>accountCollection = getResponse(webTemplateURL);<\/p>\n<p>\/\/Validate account result<\/p>\n<p>if (accountCollection.results.length &gt; 0) {<\/p>\n<p>\/\/Check for each account from account collection<\/p>\n<p>accountCollection.results.forEach(function (account) {<\/p>\n<p>\/\/Check for account name and account id from account collection<\/p>\n<p>if (isValid(account.name) &amp;&amp; isValid(account.id)) {<\/p>\n<p>\/\/Get account name<\/p>\n<p>accountName = account.name;<\/p>\n<p>\/\/Get account id<\/p>\n<p>accountId = account.id;<\/p>\n<p>\/\/Append options to account dropdown<\/p>\n<p>$(&#8220;#parentcustomerid&#8221;).append(&#8216;&lt;option value=&#8217; + accountId + &#8216;&gt;&#8217; + accountName + &#8216;&lt;\/option&gt;&#8217;);<\/p>\n<p>}<\/p>\n<p>});<\/p>\n<p>}<\/p>\n<p>} catch (e) {<\/p>\n<p>console.log(&#8220;getAccountData :: &#8221; + e.message);<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>\/\/Function to execute ajax request<\/p>\n<p>function getResponse(webTemplateURL) {<\/p>\n<p>var response = null;<\/p>\n<p>try {<\/p>\n<p>$.ajax({<\/p>\n<p>type: &#8220;GET&#8221;,<\/p>\n<p>url: webTemplateURL,<\/p>\n<p>dataType: &#8220;json&#8221;,<\/p>\n<p>async: false<\/p>\n<p>}).done(function (json) {<\/p>\n<p>response = json;<\/p>\n<p>});<\/p>\n<p>} catch (e) {<\/p>\n<p>console.log(&#8220;getResponse :: &#8221; + e.message);<\/p>\n<p>}<\/p>\n<p>return response;<\/p>\n<p>}<\/p>\n<p>\/\/Validate attributes<\/p>\n<p>function isValid(attributes) {<\/p>\n<p>try {<\/p>\n<p>if (attributes != null&amp;&amp; attributes != undefined &amp;&amp; attributes != &#8220;&#8221;) {<\/p>\n<p>returntrue;<\/p>\n<p>}<\/p>\n<p>else {<\/p>\n<p>returnfalse;<\/p>\n<p>}<\/p>\n<p>} catch (e) {<\/p>\n<p>console.log(&#8220;isValid :: &#8221; + e.message);<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>});<\/p>\n<p>In above code, <strong>webTemplateURL = &#8220;\/getaccountjson\/?relationshiptype=&#8221; + relationshipType + &#8220;&#8221;;<\/strong>is the URL prepared to get account data and this URL <strong>getaccountjson<\/strong>is nothing but the Partial URL added on Get Account JSON Web Page. Also, <strong>relationshiptype=&#8221; + relationshipType + &#8220;<\/strong>is added to pass Relationship Type as a query string parameter.<\/p>\n<p><strong><em><u>Note<\/u><\/em><\/strong><em><strong>:<\/strong> Instead of <strong>Home <\/strong>parent page if you want to set any other parent page in Web Page of JSON page then you need to add Partial URL of Parent Page as well in Ajax request i.e. suppose in above example we select <strong>Profile<\/strong> page as a parent page instead of <strong>Homepage<\/strong> then the URL for Ajax request will be as below<\/em>,<\/p>\n<h2><u>Get Account JSON <strong>Web Page<\/strong><\/u>:<\/h2>\n<p><a href=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-6.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter wp-image-25629 size-full\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-6.png\" alt=\"Use of JSON Type Web Templates in PowerApps Portals\" width=\"1127\" height=\"499\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-6.png 1127w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-6-300x133.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-6-768x340.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-6-1024x453.png 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-6-660x292.png 660w\" sizes=\"(max-width: 1127px) 100vw, 1127px\" \/><\/a><\/p>\n<p><u>Ajax request URL<\/u>:<\/p>\n<p>webTemplateURL = &#8220;\/<strong>profile<\/strong>\/getaccountjson\/?relationshiptype=&#8221; + relationshipType + &#8220;&#8221;;<\/p>\n<p>Now, on the portal side, we can see if <strong>Relationship Type <\/strong>is not selected then <strong>Account<\/strong>fieldnot listing any account to select,<\/p>\n<p><a href=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-7-1.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter wp-image-25630 size-full\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-7-1.png\" alt=\"Use of JSON Type Web Templates in PowerApps Portals\" width=\"1210\" height=\"508\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-7-1.png 1210w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-7-1-300x126.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-7-1-768x322.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-7-1-1024x430.png 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-7-1-660x277.png 660w\" sizes=\"(max-width: 1210px) 100vw, 1210px\" \/><\/a><\/p>\n<p>And, below is the screen clip with <strong>Relationship Type <\/strong>selected and filtered accounts listed in <strong>Account<\/strong> dropdown,<\/p>\n<p><a href=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-8.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter wp-image-25631 size-full\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-8.png\" alt=\"Use of JSON Type Web Templates in PowerApps Portals\" width=\"1217\" height=\"521\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-8.png 1217w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-8-300x128.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-8-768x329.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-8-1024x438.png 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2020\/11\/Use-of-JSON-Type-Web-Templates-in-PowerApps-Portals-8-660x283.png 660w\" sizes=\"(max-width: 1217px) 100vw, 1217px\" \/><\/a><\/p>\n<h1><strong>Conclusion<\/strong><\/h1>\n<p>In this blog, we have seen how we can use JSON type Web Templates in Power Apps Portals.<\/p>\n<h2 style=\"text-align: left;\"><div class=\"su-heading su-heading-style-default su-heading-align-center\" id=\"\" style=\"font-size:15px;margin-bottom:5px\"><div class=\"su-heading-inner\">Free 70% of storage space in CRM with Attachment Management Apps!<\/div><\/div><\/h2>\n<p><em><strong><a href=\"https:\/\/www.inogic.com\/product\/productivity-apps\/attach-2-dynamics-365-crm-upload-multiple-files-sharepoint-cloud-storage\" target=\"_blank\" rel=\"noopener noreferrer\">Attach2Dynamics<\/a> &#8211; Store and manage documents\/attachments in cloud storage of your choice &#8211; SharePoint, Dropbox or Azure Blob Storage from within Dynamics 365 CRM.<\/strong><\/em><br \/>\n<em><strong><a href=\"https:\/\/www.inogic.com\/product\/productivity-apps\/dynamics-365-crm-sharepoint-security-metadata-sync\" target=\"_blank\" rel=\"noopener noreferrer\">SharePoint Security Sync<\/a><\/strong> \u2013 Robust and secure solution to integrate Dynamics 365 CRM and SharePoint Security Sync thereby ensuring secure access to confidential documents stored in SharePoint.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Microsoft PowerApps Portals provide us the configuration surface which allows users to add forms to collect data in the portal without custom development. Web Template is a Power Apps entity (adx_webtemplate), included with Power Apps portals, that is used to store template source content. A web template will generally contain Liquid for dynamic content\u2026 <span class=\"read-more\"><a href=\"https:\/\/www.inogic.com\/blog\/2020\/11\/use-of-json-type-web-templates-in-powerapps-portals\/\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":13,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[16,19,37,44,38,2053,2763],"tags":[545,592,672,1101,1170,1338,2027],"class_list":["post-25609","post","type-post","status-publish","format-standard","hentry","category-dynamics-365","category-dynamics-crm","category-microsoft-portals","category-power-apps","category-microsoft-powerapps","category-power-apps-portals","category-power-pages","tag-dynamics-365-crm","tag-dynamics-crm","tag-dynamics-crm-powerapps","tag-microsoft-dynamics-365-powerapps","tag-microsoft-powerapps","tag-power-apps-dynamics-365-crm","tag-power-apps-portal"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/posts\/25609","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/comments?post=25609"}],"version-history":[{"count":0,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/posts\/25609\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/media?parent=25609"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/categories?post=25609"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/tags?post=25609"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}