<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ishan Sheikh</title>
    <description>The latest articles on DEV Community by Ishan Sheikh (@power_admin).</description>
    <link>https://dev.to/power_admin</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2298920%2F38ac774e-27d4-4cd9-a148-02b09aa1942b.png</url>
      <title>DEV Community: Ishan Sheikh</title>
      <link>https://dev.to/power_admin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/power_admin"/>
    <language>en</language>
    <item>
      <title>How to add Google Analytics in Power Pages</title>
      <dc:creator>Ishan Sheikh</dc:creator>
      <pubDate>Fri, 11 Jul 2025 05:30:45 +0000</pubDate>
      <link>https://dev.to/power365tips/how-to-add-google-analytics-in-power-pages-3j75</link>
      <guid>https://dev.to/power365tips/how-to-add-google-analytics-in-power-pages-3j75</guid>
      <description>&lt;p&gt;Adding Google Analytics to Power Pages is essential for tracking user engagement, behavior, and conversion paths. While the most common method is using the &lt;strong&gt;Header&lt;/strong&gt; or &lt;strong&gt;Footer&lt;/strong&gt; web templates, a lesser-known but efficient method is adding the script in the &lt;strong&gt;Head/Bottom&lt;/strong&gt; content snippet. This approach is simpler, avoids template modifications, and offers more flexibility for inserting global scripts.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Head/Bottom&lt;/strong&gt; snippet is rendered just before the closing &lt;code&gt;&amp;lt;/head&amp;gt;&lt;/code&gt; tag, which is the recommended placement for analytics scripts like Google Analytics or Google Tag Manager.&lt;/p&gt;

&lt;p&gt;To add the Google Analytics script, navigate to Content Snippets and create a new snippet named &lt;code&gt;Head/Bottom&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Select the type as &lt;strong&gt;HTML&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Leave the Content snippet language blank to apply across all languages.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4ztjs01y3dayvbilpb5z.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4ztjs01y3dayvbilpb5z.webp" alt="google analytics code in the head" width="800" height="309"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once added, the script will load across all pages, ensuring consistent tracking without additional customization.&lt;/p&gt;

</description>
      <category>powerplatform</category>
      <category>powerapps</category>
      <category>analytics</category>
    </item>
    <item>
      <title>Working with DatePicker in Power Pages</title>
      <dc:creator>Ishan Sheikh</dc:creator>
      <pubDate>Tue, 08 Jul 2025 05:52:00 +0000</pubDate>
      <link>https://dev.to/power365tips/working-with-datepicker-in-power-pages-58j</link>
      <guid>https://dev.to/power365tips/working-with-datepicker-in-power-pages-58j</guid>
      <description>&lt;p&gt;Power Pages uses the &lt;a href="https://getdatepicker.com/4/" rel="noopener noreferrer"&gt;Bootstrap DateTimePicker library&lt;/a&gt; to render date and time fields on forms. This library offers a wide range of methods to customize and control the behavior of the date picker widget.&lt;/p&gt;

&lt;p&gt;To programmatically interact with the date picker, you can use jQuery to retrieve the DateTimePicker object associated with a specific field.&lt;/p&gt;

&lt;p&gt;Use the following code to get the instance of the date picker object.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#field_id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;next&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;data&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;DateTimePicker&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, &lt;code&gt;field_id&lt;/code&gt; is the schema name of the field.&lt;/p&gt;

&lt;p&gt;Once you have the DateTimePicker object, you can easily apply various configurations. For example, to disable future dates from the date picker widget use the following code –&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#field_id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;next&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;data&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;DateTimePicker&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;maxDate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;moment&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also set specific date ranges to select. For example, to limit the date picker to only allow selecting dates within 7 days before and after today, creating a 14-day selectable range.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;datePicker&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#field_id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;next&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;data&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;DateTimePicker&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;datePicker&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;minDate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;moment&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;subtract&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;days&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="nx"&gt;datePicker&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;maxDate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;moment&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;days&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As you can see in the image below, only dates within 7 days before and after 16th May are selectable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkfqxrm7mk3psb1wfv05y.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkfqxrm7mk3psb1wfv05y.webp" alt="only dates within 7 days before and after today are selectable" width="800" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can refer to the official Bootstrap DateTimePicker &lt;a href="https://getdatepicker.com/4/Options/" rel="noopener noreferrer"&gt;documentation&lt;/a&gt; for a complete list of methods and customization options.&lt;/p&gt;

</description>
      <category>powerplatform</category>
      <category>lowcode</category>
      <category>javascript</category>
      <category>nocode</category>
    </item>
    <item>
      <title>Standard vs Enhanced Data Models in Power Pages</title>
      <dc:creator>Ishan Sheikh</dc:creator>
      <pubDate>Sun, 06 Jul 2025 05:46:23 +0000</pubDate>
      <link>https://dev.to/power365tips/standard-vs-enhanced-data-models-in-power-pages-5214</link>
      <guid>https://dev.to/power365tips/standard-vs-enhanced-data-models-in-power-pages-5214</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;The data model in Power Pages determines how website metadata and configurations are stored and managed in Microsoft Dataverse. The enhanced data model overcomes the limitations of the standard data model. It represents a significant architectural shift in Power Pages. In this blog, we’ll explore the key differences between these two models.&lt;/p&gt;

&lt;h2&gt;
  
  
  Standard Data Model
&lt;/h2&gt;

&lt;p&gt;Since the earliest versions of Power Pages (formerly portals), website metadata and configurations have been stored in custom tables, much like standard CRM records.These tables typically use the &lt;code&gt;adx_&lt;/code&gt; prefix.&lt;/p&gt;

&lt;p&gt;Provisioning a site using the standard data model involves installing multiple solution packages and creating custom tables, making the process time-consuming and resource-intensive.&lt;/p&gt;

&lt;p&gt;Additionally, ALM (Application Lifecycle Management) is very complex as configurations are not inherently solution-aware and must be handled separately from other Power Platform components. This often results in challenges when moving solutions across environments or applying updates.&lt;/p&gt;

&lt;p&gt;However, the limitations are not much noticed at the client end.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enhanced Data Model
&lt;/h2&gt;

&lt;p&gt;To address the limitations of the standard data model, Microsoft introduced the &lt;a href="https://learn.microsoft.com/en-us/power-pages/admin/enhanced-data-model" rel="noopener noreferrer"&gt;enhanced data model&lt;/a&gt; in 2023.&lt;/p&gt;

&lt;p&gt;This model leverages the combination of system tables, non-configuration entities, and virtual tables, eliminating the need to install additional packages and speeding up the provisioning of new sites.&lt;/p&gt;

&lt;p&gt;The metadata in the enhanced model is stored in system tables like &lt;strong&gt;powerpagesite&lt;/strong&gt;, &lt;strong&gt;powerpagecomponent&lt;/strong&gt;, and &lt;strong&gt;powerpagesitelanguage&lt;/strong&gt;, while the configuration data resides in virtual tables with &lt;code&gt;mspp_&lt;/code&gt; prefix. These tables cannot be modified.&lt;/p&gt;

&lt;p&gt;The enhanced data model also provides a better experience with the Design Studio.&lt;/p&gt;

&lt;p&gt;Since the tables are solution-aware, configurations can be packaged and deployed across environments seamlessly, enabling a smoother ALM process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Differences Between the Standard and Enhanced Data Models
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aspect&lt;/th&gt;
&lt;th&gt;Standard Data Model&lt;/th&gt;
&lt;th&gt;Enhanced Data Model&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Data storage&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Custom tables with &lt;code&gt;adx_&lt;/code&gt; prefix&lt;/td&gt;
&lt;td&gt;System, non-configuration, and virtual tables with &lt;code&gt;mspp_&lt;/code&gt; prefix&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Performance&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Slower performance in some scenarios due to the overhead of numerous custom tables&lt;/td&gt;
&lt;td&gt;Offers faster performance and a more responsive design studio experience&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Provisioning&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Slower since it involves creating multiple tables&lt;/td&gt;
&lt;td&gt;Can be contained in a solution, hence a smooth deployment process&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Solution Awareness&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Not solution aware, not possible to deploy with solutions&lt;/td&gt;
&lt;td&gt;Can be contained in a solution, hence smooth deployment process&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ALM support&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Can be complex due to reliance on the custom tables&lt;/td&gt;
&lt;td&gt;Great, since it is solution-aware and allows deployment using the Power Apps solutions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Updates&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Manual application of package updates, which can be time-consuming&lt;/td&gt;
&lt;td&gt;Smoother and more efficient updates&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Determining the model version of the portal
&lt;/h2&gt;

&lt;p&gt;To determine the model version of your existing portal, navigate to the Power Platform Admin Center and open your portal details.&lt;/p&gt;

&lt;p&gt;In the Site Details section, you can find the data model of your current portal site as seen below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn8y1j7d05p6fgi29m1hv.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn8y1j7d05p6fgi29m1hv.webp" alt="determining the version of power pages portal" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Disabling enhanced data model
&lt;/h2&gt;

&lt;p&gt;By default, any new Power Pages portal created will use the enhanced data model.&lt;/p&gt;

&lt;p&gt;However, you can disable it from the Power Platform admin center.&lt;/p&gt;

&lt;p&gt;Navigate to &lt;strong&gt;Environments &amp;gt; Your environment &amp;gt; Power Pages sites&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;At the top, you will see a switch to enable or disable the enhanced data model. Use this option to disable the enhanced data model.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvknxdvnyj2n1h172i4sy.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvknxdvnyj2n1h172i4sy.webp" alt="disable enhanced data model" width="800" height="288"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Disabling the enhanced data model will not affect any existing sites you have in your environment. Only the new sites created will now have the standard data model.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Migrating from standard to enhanced data model
&lt;/h2&gt;

&lt;p&gt;Microsoft provides functionality in the Power Apps CLI tool to migrate from standard to enhanced data model as documented &lt;a href="https://learn.microsoft.com/en-us/power-pages/admin/migrate-enhanced-data-model" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;However, at the time of writing this article, the feature is in preview and should not be used in production sites.&lt;/p&gt;

&lt;p&gt;As of now, Microsoft has not announced any plans to deprecate the standard data model. Therefore, I would recommend keeping your older sites to use the standard data model and only use the enhanced model for newer sites.&lt;/p&gt;

&lt;p&gt;That said, the limitations of the Standard model &lt;strong&gt;do not&lt;/strong&gt; impact the client-side experience, so existing sites can continue to function effectively without immediate changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;The Enhanced Data Model marks a major improvement over the Standard model, moving away from numerous custom tables to a more efficient structure, leveraging system and virtual tables. This results in faster provisioning, improved performance, better ALM capabilities, and streamlined updates.&lt;/p&gt;

</description>
      <category>powerplatform</category>
      <category>powerapps</category>
      <category>lowcode</category>
      <category>nocode</category>
    </item>
  </channel>
</rss>
