<?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: Mrinmoy Aich</title>
    <description>The latest articles on DEV Community by Mrinmoy Aich (@mrinmoyaichdevto).</description>
    <link>https://dev.to/mrinmoyaichdevto</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%2F3135958%2Ff6538d6c-6b81-4d69-bcaf-ef239c9537c2.png</url>
      <title>DEV Community: Mrinmoy Aich</title>
      <link>https://dev.to/mrinmoyaichdevto</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mrinmoyaichdevto"/>
    <language>en</language>
    <item>
      <title>Agentic AI for Smart Meter Reading &amp; Anomaly Detection : A Developer’s Guide</title>
      <dc:creator>Mrinmoy Aich</dc:creator>
      <pubDate>Sat, 09 Aug 2025 05:21:00 +0000</pubDate>
      <link>https://dev.to/mrinmoyaichdevto/agentic-ai-for-smart-meter-reading-anomaly-detection-a-developers-guide-10hf</link>
      <guid>https://dev.to/mrinmoyaichdevto/agentic-ai-for-smart-meter-reading-anomaly-detection-a-developers-guide-10hf</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Smart meters are transforming how utilities monitor and manage energy consumption by providing granular, real-time usage data. However, the flood of data presents new challenges: how can utilities automatically detect anomalies like sudden usage spikes or malfunctioning meters without constant human supervision?&lt;br&gt;
This is where agentic AI comes into play. An agentic AI system acts autonomously ingesting meter data, analyzing it for irregularities, and taking proactive actions like sending alerts or scheduling maintenance. In this article, I’ll Walk you through a practical AI-driven approach for smart meter anomaly detection, complete with example data, code snippets, and suggestions for visual aids to clarify the workflow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Use Agentic AI in Smart Metering?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Agentic AI agents are distinct because they:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Operate independently without human intervention.&lt;/li&gt;
&lt;li&gt;  Make contextual decisions based on data patterns.&lt;/li&gt;
&lt;li&gt;  Continuously learn and adapt over time (in more advanced setups).&lt;/li&gt;
&lt;li&gt;  Scale easily to manage thousands or millions of devices.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For utilities, this means faster detection of issues like power theft, equipment faults, or communication failures—minimizing revenue loss and improving service reliability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;High-Level Architecture&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here’s a typical architecture for an agentic AI smart meter anomaly detection system:&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%2Fskbqnjetahdk4jifmikh.png" 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%2Fskbqnjetahdk4jifmikh.png" alt="High Level Architecture" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data Collection &amp;amp; Preprocessing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Smart meters usually generate time-series data—say, hourly kWh consumption values. Before detection, the agent needs clean, normalized data.&lt;/p&gt;

&lt;p&gt;Example raw data for one meter (hourly kWh):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Hour Usage (kWh)
1     1.05
2     1.10
3     1.00
4     8.50
5     1.20
6     1.15
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice the spike at hour 4.&lt;/p&gt;

&lt;p&gt;Common preprocessing steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Fill missing readings with interpolation.&lt;/li&gt;
&lt;li&gt;  Normalize usage by expected baseline (e.g., seasonal averages).&lt;/li&gt;
&lt;li&gt;  Smooth noisy data with moving averages or exponential smoothing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Core Anomaly Detection Logic&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Threshold-Based Spike Detection&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A simple yet effective approach is to flag readings that suddenly jump by a factor beyond a threshold relative to recent average consumption.&lt;/p&gt;

&lt;p&gt;python&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
def detect_spikes(readings, window=3, spike_factor=3.0):
    anomalies = []
    for i in range(window, len(readings)):
        baseline = sum(readings[i-window:i]) / window
        if readings[i] &amp;gt; spike_factor * baseline:
            anomalies.append((i, readings[i], 'spike'))
    return anomalies
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. Flatline or Zero Usage Detection&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Meters that report constant zero or near-zero readings over extended periods may be malfunctioning.&lt;/p&gt;

&lt;p&gt;python&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def detect_flatlines(readings, flat_threshold=0.05):
    # Check if all values are close to zero
    if all(abs(val) &amp;lt; flat_threshold for val in readings):
        return True
    return False

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3. Seasonal or Contextual Anomaly Detection (Expanded)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Real-world consumption patterns depend on the time of day, weather, or day of week. Incorporating seasonal models improves accuracy.&lt;br&gt;
For example, a z-score based anomaly detection normalizes against historical means and standard deviations:&lt;/p&gt;

&lt;p&gt;python&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import numpy as np

def detect_zscore_anomalies(readings, historical_mean, historical_std, threshold=3):
    anomalies = []
    for i, val in enumerate(readings):
        z_score = (val - historical_mean[i]) / historical_std[i]
        if abs(z_score) &amp;gt; threshold:
            anomalies.append((i, val, 'seasonal_anomaly'))
    return anomalies

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Putting It All Together: Agentic AI Workflow
&lt;/h2&gt;

&lt;p&gt;python&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class SmartMeterAgent:
    def __init__(self, spike_factor=3.0, flat_threshold=0.05):
        self.spike_factor = spike_factor
        self.flat_threshold = flat_threshold

    def ingest_data(self, meter_id):
        # Fetch latest 24 hourly readings (stub function)
        return fetch_meter_data(meter_id)

    def preprocess(self, readings):
        # Example: fill missing data, smooth readings
        return smooth_readings(fill_missing(readings))

    def analyze(self, readings, historical_mean=None, historical_std=None):
        anomalies = detect_spikes(readings, spike_factor=self.spike_factor)
        if detect_flatlines(readings, flat_threshold=self.flat_threshold):
            anomalies.append(('flatline', 0, readings[0]))
        if historical_mean and historical_std:
            anomalies.extend(detect_zscore_anomalies(readings, historical_mean, historical_std))
        return anomalies

    def act(self, meter_id, anomalies):
        if not anomalies:
            log(f"Meter {meter_id}: Normal readings")
            return
        for idx, val, typ in anomalies:
            if typ == 'spike':
                alert(f"Spike detected on meter {meter_id} at index {idx}: {val} kWh")
            elif typ == 'flatline':
                schedule_maintenance(meter_id)
            elif typ == 'seasonal_anomaly':
                alert(f"Seasonal anomaly on meter {meter_id} at index {idx}: {val} kWh")

    def run(self, meter_id, historical_mean=None, historical_std=None):
        raw = self.ingest_data(meter_id)
        processed = self.preprocess(raw)
        anomalies = self.analyze(processed, historical_mean, historical_std)
        self.act(meter_id, anomalies)

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Example Use Case: Sample Data and Output&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Suppose for Meter ID 123:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Raw readings: [1.0, 1.1, 1.2, 10.5, 1.3, 1.1, 1.0]&lt;/li&gt;
&lt;li&gt;  Historical mean: [1.05, 1.10, 1.15, 1.20, 1.15, 1.10, 1.05]&lt;/li&gt;
&lt;li&gt;  Historical std dev: [0.1, 0.1, 0.1, 0.15, 0.1, 0.1, 0.1]&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The agent detects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  A spike at index 3 (10.5 kWh vs. mean 1.20),&lt;/li&gt;
&lt;li&gt;  Raises a spike alert automatically.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Flow Chart&lt;/strong&gt;&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%2Fu666ioqqg2cqx0bzfkzy.png" 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%2Fu666ioqqg2cqx0bzfkzy.png" alt="Flow Chart" width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best Practices and Next Steps&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Use rolling windows to smooth data and detect short-term anomalies.&lt;/li&gt;
&lt;li&gt;  Leverage historical and contextual data (weather, holidays) to reduce false alarms.&lt;/li&gt;
&lt;li&gt;  Consider integrating machine learning models (Isolation Forest, LSTM autoencoders) for more sophisticated anomaly detection.&lt;/li&gt;
&lt;li&gt;  Continuously train and tune agent thresholds based on feedback.&lt;/li&gt;
&lt;li&gt;  Build a dashboard for operators to visualize anomalies and agent actions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Agentic AI provides a scalable, autonomous solution for smart meter anomaly detection, empowering utilities to proactively manage their networks with reduced manual effort. The example solution here is a solid foundation, and you can extend it with more advanced analytics and domain knowledge to build robust, real-world systems.&lt;br&gt;
If you’re building smart utility applications, starting with agentic AI agents like this can drastically improve monitoring efficiency and operational reliability.&lt;/p&gt;

</description>
      <category>agentai</category>
      <category>anomalydetection</category>
      <category>smartmeter</category>
      <category>ai</category>
    </item>
    <item>
      <title>Oracle Visual Builder (VB) Authentication Using External Identity Provider Instead of Oracle IAM</title>
      <dc:creator>Mrinmoy Aich</dc:creator>
      <pubDate>Wed, 14 May 2025 16:42:21 +0000</pubDate>
      <link>https://dev.to/mrinmoyaichdevto/oracle-visual-builder-vb-authentication-using-external-identity-provider-instead-of-oracle-iam-196l</link>
      <guid>https://dev.to/mrinmoyaichdevto/oracle-visual-builder-vb-authentication-using-external-identity-provider-instead-of-oracle-iam-196l</guid>
      <description>&lt;h2&gt;
  
  
  Business Scenario:
&lt;/h2&gt;

&lt;p&gt;A large enterprise wants to build a Vendor Management Portal using Oracle Visual Builder (VB) but prefers to use Azure Active Directory (Azure AD) for authentication instead of Oracle Identity Cloud Service (IDCS). &lt;/p&gt;

&lt;h2&gt;
  
  
  The goal is to:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Authenticate users via Azure AD instead of IDCS.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fetch user details (Name, Email, Role, etc.) from Azure AD.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Allow only authorized users to access the application.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enable seamless integration with existing enterprise identity management.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Implementation :
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Configurations in Azure.&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Azure Configuration:&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt; The user should log in to the Microsoft Azure Cloud 
Environment.&lt;/li&gt;
&lt;/ul&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%2Feon5i5r6t1ssr4djx7l0.png" 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%2Feon5i5r6t1ssr4djx7l0.png" alt="Azure login" width="304" height="189"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Create an application from the link “App Registration”.&lt;/li&gt;
&lt;/ul&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%2Fm11b0tnwponmce9ocn1r.png" 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%2Fm11b0tnwponmce9ocn1r.png" alt="App Registration" width="304" height="189"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Click on “New Registration” link.&lt;/li&gt;
&lt;/ul&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%2Fsqqa4776tl68nks88b75.png" 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%2Fsqqa4776tl68nks88b75.png" alt="New Registration" width="285" height="94"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Provide a name for the application.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose the supported account types as “Personal Microsoft &lt;br&gt;
    accounts only”.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose the Redirect URI as “Single page application” and &lt;br&gt;
    redirect url is your VB application, like &lt;a href="https://xxx-xxxx-" rel="noopener noreferrer"&gt;https://xxx-xxxx-&lt;/a&gt; &lt;br&gt;
    oic-portals.builder.us-phoenix- &lt;br&gt;
1.ocp.oraclecloud.com/ic/builder/rt/OracleUtilityDemo/1.0/webApps/utilityapp.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Then click on “Register”.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2F79fqip58dasvx3f23yjm.png" 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%2F79fqip58dasvx3f23yjm.png" alt="register" width="382" height="167"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;From the “App Registration” page, click on the newly created 
app.&lt;/li&gt;
&lt;/ul&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%2Frpcwdptbbmdj0iu83pqf.png" 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%2Frpcwdptbbmdj0iu83pqf.png" alt="App Registration Page" width="346" height="151"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;From the following page, capture the below information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Client ID : 1de6e6e9-27ae-49a3-95a8-8afc4a2af71b&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also ask your Azure Admin to provide the tenant id for Azure.&lt;/p&gt;

&lt;p&gt;This will complete your Azure activities.&lt;/p&gt;




&lt;p&gt;2 &lt;strong&gt;Visual Builder Work:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a VB application and put the functionalities you want to 
create for the app.&lt;/li&gt;
&lt;li&gt;Now the following task needed to integrate Microsoft 
authentication in front of your Visual Builder application. &lt;/li&gt;
&lt;li&gt;For this application, we need to use a custom &lt;a href="https://docs.oracle.com/en/cloud/paas/app-builder-cloud/visualbuilder-pagemodel/security-provider.html" rel="noopener noreferrer"&gt;security provider&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;First inside the Visual Builder application, we will import a 
javascript file called “&lt;a href="https://alcdn.msauth.net/browser/2.14.2/js/msal-browser.min.js" rel="noopener noreferrer"&gt;msal-browser.min.js&lt;/a&gt;"&lt;/li&gt;
&lt;/ul&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%2Fd5cx3aemnanqudr0blar.png" 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%2Fd5cx3aemnanqudr0blar.png" alt="msal.js" width="305" height="143"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Now you need to do the major step by creating a Security provider for Azure.
To implement an AzureSecurityProvider that extends the DefaultSecurityProvider and overrides the fetchCurrentUser(config) method, you would typically create a custom security provider in a JavaScript environment, possibly in an application framework where security or authentication providers can be customized. 
There are few methods which present in DefaultSecurityProvider. Which we need to overwrite in this custom security provider.&lt;/li&gt;
&lt;/ul&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%2Fhxf97b2idufl9502hxmx.png" 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%2Fhxf97b2idufl9502hxmx.png" alt="Security Provider" width="269" height="114"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;On the Web Apps tab in the Navigator, select your web app, then click the JSON tab to open the app-flow.json file.
Search for the following part and change with your security provider.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;"userConfig": {&lt;br&gt;
    "type": "resources/js/azureSecurityProvider",&lt;br&gt;
    "configuration": {&lt;br&gt;
         },&lt;br&gt;
          "embedding": "deny"&lt;br&gt;
             }&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Now Stage the VB application and run it.&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Running the Application :&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Once we will run the application Microsoft login page will 
appear.&lt;/li&gt;
&lt;/ul&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%2F7v2rv24gnguxcu4ifws1.png" 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%2F7v2rv24gnguxcu4ifws1.png" alt="MS Login" width="333" height="85"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your new login screen.&lt;/li&gt;
&lt;/ul&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%2Fnfxdjp4bzkl86syq5vah.png" 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%2Fnfxdjp4bzkl86syq5vah.png" alt="login" width="334" height="148"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It will ask for password.&lt;/li&gt;
&lt;/ul&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%2F1nr9hahxvqfkixhgqw55.png" 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%2F1nr9hahxvqfkixhgqw55.png" alt="enter password" width="334" height="148"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you login successfully, it will redirect you to your Visual Builder application and display the data.&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%2F3i1njz5s0hsgtetee9sc.png" 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%2F3i1njz5s0hsgtetee9sc.png" alt="display data" width="409" height="181"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thank you.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>visualbuilder</category>
      <category>azure</category>
      <category>identityprovider</category>
    </item>
  </channel>
</rss>
