Saurabh Pant, Author at Microsoft Power Platform Blog http://approjects.co.za/?big=en-us/power-platform/blog Innovate with Business Apps Mon, 22 Sep 2025 09:02:49 +0000 en-US hourly 1 https://wordpress.org/?v=6.8.3 Microsoft Power Platform: Learning Resources (OLD) http://approjects.co.za/?big=en-us/power-platform/blog/power-apps/microsoft-powerapps-learning-resources/ Fri, 01 Sep 2023 20:00:00 +0000 http://approjects.co.za/?big=en-us/power-platform/blog/power-apps/microsoft-powerapps-learning-resources/ As members of the Power CAT team driving customer success and adoption, we often get asked for a summary of resources to share with customers on their Power Platform journey. This blog post includes a set of links we've curated to help novice, intermediate and advanced users as they take this journey with us.

The post Microsoft Power Platform: Learning Resources (OLD) appeared first on Microsoft Power Platform Blog.

]]>
Please visit the updated page for the latest set of curated links from the Power CAT team here.
As members of the Power CAT team, we often get asked for a summary of resources to share with customers on their Power Platform journey. Below is a set of links we’ve curated to help novice, intermediate and advanced users as they take this journey with us.

I am NEW, help me get started

I have SOME EXPERIENCE

I am interested in ADMINISTRATION & GOVERNANCE

Resources for PRO DEVELOPERS and FUSION TEAMS

I am a MICROSOFT PARTNER

Show me REAL WORLD CUSTOMER STORIES

How do I GET INVOLVED and STAY CONNECTED

COPILOT AND GENERATIVE AI

Power Apps
Power Automate
Power Virtual Agents
Power Pages
Responsible AI

CONNECTORS AND DATA INTEGRATION

I use SHAREPOINT, how can I integrate with Power Apps

I use ACCESS WEB APPS, how can I leverage Power Apps

LABS, CERTIFICATIONS, COURSES & BOOKS

BEST PRACTICES & COMMON USE CASES

PRODUCT PAGES

Power Apps
Power Automate
Copilot Studio
Power BI

The post Microsoft Power Platform: Learning Resources (OLD) appeared first on Microsoft Power Platform Blog.

]]>
Reliable Electric: Power platform customer story http://approjects.co.za/?big=en-us/power-platform/blog/power-apps/reliable-electric-power-platform-customer-story/ Tue, 07 Aug 2018 14:14:51 +0000 http://approjects.co.za/?big=en-us/power-platform/blog/power-apps/reliable-electric-power-platform-customer-story/ Lars Peterson is a General Manager from Reliable Electric, Canada. With no prior app development experience, he taught himself PowerApps, Microsoft Flow and SQL, and used the Power platform to transform core business processes, such as creating daily work order estimates.

The post Reliable Electric: Power platform customer story appeared first on Microsoft Power Platform Blog.

]]>
Reliable Electric customer story - banner image

“PowerApps gives me the ability dream up a business system, draw it, then make it at much quicker speeds that I could have done by learning to program.”– Lars Peterson, General Manager (and app maker), Reliable Electric

Lars Peterson is a General Manager at Reliable Electric, Canada, who had no prior app development experience before using the Power platform. He taught himself PowerApps, Microsoft Flow and SQL, and used the Power platform to transform core business processes, such as creating daily work order estimates. This replaced a legacy system for which the company was paying $2,000 for a single seat, and was not user friendly or customizable to meet their exact needs.

Business scenario

Reliable Electric specializes in the design and installation of integrated electrical projects in high-end homes. To generate a work order proposal for a customer, they need to go through the process of analyzing drawings and determining the materials required to accomplish the design. The term used to define this process in construction and engineering projects is a takeoff. To put together a proposal, the estimator at Reliable Electric needs to generate accurate price estimates for all the takeoffs in a project. This requires a complex set of inputs followed by a lookup of product information and a series of calculations to generate a final customer-ready proposal with accurate estimates.

Before Power platform – business process, challenges and opportunities

Reliable Electric had purchased a legacy desktop-based software called Accubid. The process was as follows:
– A contractor would provide the plans
– Estimators would do the takeoffs and enter all the information into Accubid
– All information from Accubid was then copy-pasted into an estimation spreadsheet to get a final proposal

Before PowerApps - screenshot of spreadsheet

This solution had several challenges:

– According to Lars, “the interface was terrible, was hard to view and change certain data elements.”
– The output from Accubid had to be copy-pasted into a spreadsheet to get a proposal that met their needs.
– Only one person could use the tool at a time. Each additional seat was $2000, which was cost prohibitive.
– They needed a solution that provided them control over their data, with a user interface that was easy to use.

Power Platform solution – Work order estimation app

In a prior role, Lars Peterson was a small business consultant who researched multiple tools to help his customers but found himself almost always recommending Excel. He tried Access but felt it was complex and not something he could leave with the customer to maintain on their own. After joining Reliable Electric, he spent six months researching several estimation software solutions. He did not find any off-the-shelf tools that met his exact needs and decided to build a solution on his own using PowerApps and Microsoft Flow, with SQL as the backend. He found out about PowerApps through his Office 365 subscription. He chose it over other competitive offerings due to the rich visual appeal and depth of customization that was possible. He calls the solution “Estimating the Database” or ED for short. The application has been live in production since December 2017 and used daily by Estimators, Project Managers and Sales Representatives in the organization. It actively manages over 70 projects at any given point in time.

Estimator app screenshot

Screenshot of estimator app

PowerApps: Estimators use a PowerApp on their desktop to manage the entire estimation process. They use predefined assemblies that have been customized for the business. These assemblies are basically takeoff templates that have a collection of products. The assembly is attached to a project and becomes a takeoff – an assembly with a quantity. The cost and labor associated with each takeoff is rolled up based on the products in the takeoff. Each takeoff is then priced based on this roll up with labor costs and other adjustments factored in. All of this happens automatically based on the defaults set in the estimate and can be customized as needed. The final output is stored in a SQL database. An Excel spreadsheet that is directly connected to the database is used to generate the final product list or bill of materials along with the proposal summary.

Microsoft Flow: Flows are used to trigger stored procedures in SQL and notify the Director of Projects & Design whenever a new product is added, or a new assembly created.

SQL Azure: All data for assemblies, product lists, prices and estimates are stored in a SQL Azure database.

Screenshot of Microsoft Flow

Screenshot of Flows

Benefits from using the Power platform

  • Reduced the time for data entry by half which allowed plans to get priced quickly
  • Electricians found the app easy to learn and use, as compared to the old Accubid solution
  • No more need for copy-pasting data, the spreadsheet is directly connected to the database which ensures that everyone always has accurate information
  • They are in full control of the data – it is instantly available and can iterate through quickly

Lars Peterson quote

Solution architecture

The app uses SQL Azure for storing information about Assemblies, Products, Estimates and Proposals involved. The PowerApps application provides easy to use templates to key in the receptacle, view the assemblies and products involved, modify if needed per the customer’s request and generate an estimate for the client

Solution architecture

High level architecture diagram of the Power platform solution

Looking beyond a single app

Encouraged by the success of the estimator app, Lars has built several additional solutions. His goal is to modernize all instances where they use siloed spreadsheets for critical business processes and replace them with a PowerApps solution. He has brought on an additional resource to work on the backend SQL database layer, while he continues to develop the PowerApps Canvas apps.

  • Employee Engagement: A phone app used to submit feedback, report vacation, 1-on-1 forms, and manage employee information.
  • Product Updater: A tablet app built to edit product lists and vendor product information.
  • Sales Tracker: A desktop app to enter and track opportunities and projects. Setting this up to link to QuickBooks through an Azure SQL synced database.
  • Asset Tracker: A phone app that tracks all tools in the company. Plan to use the barcode feature in this app and populate it full of tools.

Additional screenshots

Work order estimator

Work order estimator app screenshot

Work order estimator app screenshot

Mobile apps – employee requests, asset tracking

Mobile apps screenshot

Product updater

Product updater app screenshot

Sales tracker

Sales tracker app screenshot

The post Reliable Electric: Power platform customer story appeared first on Microsoft Power Platform Blog.

]]>
Implementing Offline Capabilities for Relational Data http://approjects.co.za/?big=en-us/power-platform/blog/power-apps/implementing-offline-capabilities-for-relational-data/ Wed, 01 Aug 2018 15:14:44 +0000 http://approjects.co.za/?big=en-us/power-platform/blog/power-apps/implementing-offline-capabilities-for-relational-data/ As you may already know, POWERAPPS provides offline capabilities for your applications to enable users to be productive when there is limited internet access or no connectivity.

The post Implementing Offline Capabilities for Relational Data appeared first on Microsoft Power Platform Blog.

]]>
As you may already know, PowerApps provides offline capabilities for your applications to enable users to be productive when there is limited internet access or no connectivity. Here is a blog which talks about basic implementation details for offline capabilities in your app. The current tutorial provides deeper context on how to build these offline capabilities along with relational data (master and child) in your PowerApps application.

This tutorial assumes that you already know the offline concepts of PowerApps like SaveData, LoadData functions and Connection signal object. We’ll will use all these concepts in this tutorial .

 

Note

The offline feature area is still under development and is not optimized for every offline scenario today. The functions to SaveData() to a local device and LoadData() from that device work best in their current implementation over relatively small quantities of data (e.g., dozens of text records in a table) that generally do not exceed 2MB. This is useful for some basic “offline” scenarios as well as to increase the startup performance of canvas apps by caching data locally. However, using this feature to save large amounts of data (e.g., saving thousands of rows in a table, or caching large images or videos) may cause errors or unexpected behavior with the current implementation and should be avoided. Also, the functions do not automatically resolve merge conflicts when a device returns to connectivity from offline – configuration on what data is saved and how to handle reconnection is up to the maker when writing expressions. We are working to expand the capabilities of offline apps to increase stability and size limits, and in the future to automatically handle decisions about what to save and how to handle conflicts. Stay tuned here and on the PowerApps blog for updates when they become available. 

 

Scenario

For this tutorial , let’s assume we have to build a simple Store Inspection App.

  • Primarily, app should have 3 screens
1. List of Stores 2. Add Store Screen 3. Add inspection Screen
image image image
  • Screen 1 should show the list of all stores including the stores that are created when offline
  • Screen 2 captures new stores along with inspections (Screen 3) even when the internet connection is not available and save them to the database when the internet connection is available
  • For existing stores, new inspections(Screen 3) should be prepopulated with latest inspection data (sorted by created data) in both offline and online mode.
  • Offline changes should be synched to online by user intervention (on explicit button click)

Note: You can find the finished sample msapp file(for code reference) over here. For this app, I used CDS (Common Data Service) as the data source. However same concepts will apply to any other data source like SharePoint, SQL etc.

So to achieve above mentioned requirements, I have created 2 custom entities called Store and Inspection with 1 : n relationship ( I.e., one store can have multiple inspections) in CDS to capture Stores and related inspections data.

image

Part 1 : Offline Caching of master and child tables

First screen of this app is a List of Stores. So, on Start of the app, we’ll check for the internet connection using PowerApps built in operator “Connection”. If internet connection is available, Populate both parent and child entities data “Stores”, “Inspections” into local collections “StoreCollection” and StoreInspectionCollection. Also, save it to the local storage (local caches) as “storesInLocalStorage”, “storesInspectionsInLocalStorage” so that we can use it as local cache when the internet connection is not available.

High level approach for accomplishing this is below:

  • On start of the app, check if the internet connection is available or not
  • If internet connection is available, fetch the data from the database and put that in a collection and save this collection data to local storage of your device (local cache) so that we can use this cached data next time when the internet connection is not available.
  • If internet connection is not available, fetch data from local storage of your device and use that to populate the collection.
offline-1

image

Part 2: Capture new stores and inspections whether the device is online or offline

Create new store

For adding new stores, add a new screen and insert an EditForm control with data source to Stores in that screen. Navigate to this screen on the press of plus sign from the first page.

Our high-level approach to save new Stores will be as follow:

flow 1-1

1. If the internet connection is available,

  • Submit the form so that new issue is directly saved to the database.
  • Refresh the “Stores” data source and repopulate the parent collection with the latest data so that your local collection has the last added record
  • Save this local collection in the local storage– this ensures that the newly added record is available in local cache to be used next time when the app is opened in offline mode (without internet connection)
  • Set the SelectedStoreid variable to last submitted record id, so that it can be used in the child screen.
  • Navigate to inspection screen to create the inspection for newly created store

2. If the internet connection is not available,

  • Here, we need a unique id or GUID to carry on the parent child relationship. So, create a temp unique id for new parent record so that you can attach this id to child records for relationship tracking.
  • PowerApps does not have better way to generate GUIDs so I have used date time now in milliseconds as unique id, because it is almost not possible for the same user to create two records in a millisecond. You can use your own approaches to create this temp unique id’s.

3. Set the SelectedStoreid variable to this unique id to use in child screen

4. Add a variable called isDirty= true to identify offline records while synch back to online. Use Collect function to collect all this details into master collection “StoreCollection” so that this offline record reflects on the Stores Screen.

  • Save this local collection in the local storage– this ensures that the newly added offline record is available in local cache to be used next time when the app is opened in offline mode (without internet connection)
Create new inspection

Now, let’s focus on how to save the inspections(Child) for stores, high-level approach for this is almost like Stores with fewer changes.

As we mentioned above in this tutorial , Inspection form would be prepopulated with latest/last inspection record (sorted by created date), So again we need to cover 2 scenarios here.

For New store, there will be no inspection records and form will be new and for existing store, we will find the latest record using Last and Sort By functions and pass this record as parameter(LastSurveyOfStore) to inspection screen using Navigate function.

Our high-level approach to save new Inspections will be as follow:

1. If the internet connection is available

  • Submit the form so that new Inspection is directly saved to the database.
  • Refresh the “Inspections” data source and repopulate the child collection with the latest data so that your local collection has the last added record
  • Save this local collection in the local storage
  • Navigate back to Stores screen (1st Screen)

2. If the internet connection is not available

  • Add a variable called ParentID and assign the SelectedStoreid (Which contains latest uniqueid in offline mode and last submitted record id in online mode).
  • Use Collect function to collect all this details into child collection “StoreInspectionCollection” so that this offline record reflects on the Stores Screen.
  • Save this local collection in the local storage

 

2 3

Part 3: Sync up offline records when internet connection is available

On the “StoreScreen”, Add a label at the bottom to show how many offline records are to be save to database (or, if all of them are saved, indicate so). This is done by filtering the count or rows in the collection using isDirty flag.

Add a button for user intervention to save the offline records to database (We can also have timer that checks for the internet connection availability using the same Connection object which we used earlier for every given time interval). If the Connection is connected and button gets enabled and gives the opportunity to save the pending offline records.

Our high- level approach would be first to patch the parent record and update the corresponding child records parentID with patched primary id and then patch the child records.

In detail as follows

  • Filter the StoreCollection and StoreInspectionCollection for items that are added offline using isDirty flag and ClearCollect these items into new collections (“StoresTobeAdded”,” StoresInspectionsTobeAdded.
  • Use ForAll function to iterate each record of new Parent collection and patch each store(parent) record. Collect this patched item into temp collection to access the primary id since PowerApps does not allow to declare a variable in ForAll to hold the patched item.
  • Identify the children of patched parent record using ParentID variable in new child collection and Update the corresponding child records ParentID value with newly patched primary id.
  • Remove the patched item from the collection and continue to evaluate other records in the loop
  • Refresh the data source (Stores), collect to local collection and save this local collection to cache (local storage)
  • Now, it’s time to save the child records, Use ForAll function and Patch each child record.
  • Refresh the data source (Inspections), collect to local collection and save this local collection to cache (local storage)
save button flow

4

 

5

Conclusion

Hopefully, this tutorial gives you an idea of how to build offline capabilities with relational data in your application.

The post Implementing Offline Capabilities for Relational Data appeared first on Microsoft Power Platform Blog.

]]>
Implementing Offline Capability In Your App http://approjects.co.za/?big=en-us/power-platform/blog/power-apps/implementing-offline-capability-in-your-app/ Tue, 30 Jan 2018 15:50:41 +0000 Read this blog to see an example of building basic offline capabilities in your PowerApps app. If your app users need to access some data or save some data even when they don't have the internet connection, you'll find this article helpful.

The post Implementing Offline Capability In Your App appeared first on Microsoft Power Platform Blog.

]]>
Do you want to build offline capabilities in your PowerApps app because your app users need to access some data or save some data even when they don’t have the internet connection? This blog provides an example of building these offline capabilities in your PowerApps app. This article assumes that you already know the basic concepts of PowerApps like screens, controls, events, attributes, navigation etc. We’ll will use all these concepts in this tutorial.
 

Note

The offline feature area is still under development and is not optimized for every offline scenario today. The functions to SaveData() to a local device and LoadData() from that device work best in their current implementation over relatively small quantities of data (e.g., dozens of text records in a table) that generally do not exceed 2MB. This is useful for some basic “offline” scenarios as well as to increase the startup performance of canvas apps by caching data locally. However, using this feature to save large amounts of data (e.g., saving thousands of rows in a table, or caching large images or videos) may cause errors or unexpected behavior with the current implementation and should be avoided. Also, the functions do not automatically resolve merge conflicts when a device returns to connectivity from offline – configuration on what data is saved and how to handle reconnection is up to the maker when writing expressions. We are working to expand the capabilities of offline apps to increase stability and size limits, and in the future to automatically handle decisions about what to save and how to handle conflicts. Stay tuned here and on the PowerApps blog for updates when they become available. 

 

Offline Requirements Of An Example Issue Reporting App

For this tutorial, let’s assume we have to build a simple Issue Reporting App with the following requirements:

  • Show the list of reported issues (show latest data from the database or offline cache when the internet connection is not available)
  • Capture new issues even when the internet connection is not available and save them to the database when the internet connection becomes available

 

image

 

Note:

  • For this blog, I’ll not get into conflict resolution scenarios e.g. allow offline editing of existing records and resolve conflicts with the edits done by other users on the same record. Implementing conflict resolution needs more work- e.g. you have to not only detect conflicts but also come up with a policy to resolve the conflict (auto resolution or user intervention). Conflict Resolution implementation would be easier to grasp, once you fully understand the offline capabilities described in this article. If there is enough interest, I’ll write another article covering the conflict resolution aspect as well.
     
  • You can find finished version of the example app over here (msapp file is here and exported package along with CDS is here). For this app, I used CDS (Common Data Service) as the data source. However same concepts will apply to any other data source like SharePoint, SQL etc.

 

Part 1:  Build Offline Cache of the Issue List: Show Online or Offline List Depending On the Internet Connection Availability

 

High Level Approach for accomplishing this is:

  • On start of the app or on click of a button, check if the internet connection is available
  • If internet connection is available, fetch the data from the the database and put that in a collection (table in memory). Also, save this collection data to local  storage of your device (local cache) so that we can use this cached data next time when the internet connection is not available (see next bullet).
  • If internet connection is not available, fetch data from local storage of your device and use that to populate the collection.

 

For this app, I created a very simple custom entity “Issue List” in CDS (Common Data Service) to capture issues with “Title” and “Description” as 2 custom fields.
Note- I used CDS as the data source for my app. You can also use any other data source like SQL, SharePoint Online etc for creating similar table. Offline implementation concepts will be same.

 

image

 

First screen in this sample app is a cover page kind of screen. On the click of “Let’s Go” button, we’ll check the internet connection via an object exposed by PowerApps called “Connection”. If internet connection is available (i.e. Connection.Connected is true), populate the local collection “IssueCollection” directly from the entity “Issue List” in the CDS database. Also, save it to the local storage (local cache) as “issuesInLocalStorage” so that we can use it as local cache when the internet connection is not available. If internet connection is not available, populate “IssueCollection” from this local cache. Finally, put the formula to navigate to the next screen where we’ll be using the “IssueCollection” collection as the data source (Items property) for the gallery to show all the issues.

 

Following is the formula to be written on OnSelect event of the  button “Let’s Go”:

If(Connection.Connected,

ClearCollect(IssueCollection, ‘Issue List’);

SaveData(IssueCollection,”issuesInLocalStorage”),
LoadData(IssueCollection,”issuesInLocalStorage”, true)

);

Navigate(IssueListScreen,ScreenTransition.Cover)

 

Note- I chose the option to do all this work in the OnSelect event of a button. You are free to use a different approach like doing all this work in the OnStart event of the app or OnVisible event of the screen.

 

image

 

Now, on the next screen (“IssueListScreen”), insert a gallery and set the Items property of that gallery to “IssueCollection”. Show the Title and Description fields in the gallery. That’s it for the first requirement. Your app is now ready to show data directly from the data source or local cache depending on the internet connection availability.

 

Test it by first opening the app and seeing the gallery data with the internet connection on your phone. Close the app and now turn the phone in the airplane mode. Open this app again and hit “Let’s Go”. You should see the issue list coming from Local Cache.

Important Note- As of now, you can’t test the LoadData and SaveData in browser. You must use your mobile device to test that part. In the web editor, you might see the error for LoadData and SaveData. Please ignore that.

 

image

 

Part 2: Capture new issues even when internet connection is not available and save to the database when the internet connection becomes available

For adding new issues, add a new screen “NewIssueScreen” and insert an EditForm control in that screen. Navigate to this screen on the press of plus sign from the “IssueListScreen”. Our high level approach for save new data (new issue for our app) will be as follows:
 

  • If the internet connection is available,
    • Submit the form so that new issue is directly saved to the database.
    • Refresh the “Issue List” data source and repopulate the collection “IssueCollection” with the latest data from “Issue List” data source (so that your local collection gets the last record added in the table).
    • Save “Issue Collection” collection in the local storage as “issuesInLocalStorage” – this ensures that the newly added record is available in local cache to be used next time when the app is opened in offline mode (without internet connection)
  • If the internet connection is not available,
    • Add the offline issues to be added to a local collection called “IssuesToBeAdded”. In a later step, using a timer, we’ll keep checking the internet connection availability. As soon as the internet becomes available, we’ll try saving this local collection to the database and clear the local collection.
    • Also save this local collection of offline “IssuesToBeAdded” to local storage as “newIssuesInLocalStorage”. This will be useful if the app is closed with some offline new issues to be saved. We’ll retrieve it from the local storage next time when the app is opened.
       

Following is the formula to be used on the “OnSelect” event of a save button:

If(Connection.Connected,SubmitForm(EditForm1); Refresh(‘Issue List’); ClearCollect(IssueCollection,’Issue List’);
SaveData(IssueCollection,”issuesInLocalStorage”)
,
Collect(IssuesToBeAdded,{Title:TitleDatacard.Text,Description:DescriptionDatacard.Text} ); SaveData(IssuesToBeAdded, “newIssuesInLocalStorage”));

Navigate(IssueListScreen,ScreenTransition.Cover)

 

image

 

  • Add a new screen to show these offline issues to be added (I call it “UnSavedIssuesScreen”). Add a gallery control and set the “Items” property of the gallery control to “IssuesToBeAdded”.
     
  • On the “IssueListScreen”,
    • Add a label at the bottom to show how many offline issues are to be save to database (or, if all of them are saved, indicate so). This is done by checking the count or rows in the collection “IssuesToBeAdded”. Text formula for this label should be:

            If(CountRows(IssuesToBeAdded) >0,CountRows(IssuesToBeAdded) & ” offline issues to be added”, “0 offline issues. All caught up.”)
           

    • Add a timer that checks every 30 seconds for the internet connection availability (using the same Connection object we used earlier). If the Connection is connected and there are some pending offline issues to be saved,:
      • Save the “IssuesToBeAdded” collection to the database 
      • Clear the collection “IssuesToBeAdded” (because they are all saved to the database now)
      • Get the latest list of issues from the database (by using Refresh method on “Issue List” and repopulating the collection “IssueCollection”)
      • Update the local cache “issuesInLocalStorage” with this repopulated collection “IssueCollection”. This will ensure that app can get the updated issue list from the local cache if it is opened next time in offline mode (without internet connection)

                 Below is the formula for OnTimerEnd event of the timer:

                  If(Connection.Connected && CountRows(IssuesToBeAdded) >0,

                     Collect(‘Issue List’,IssuesToBeAdded);

                     Clear(IssuesToBeAdded);

                     SaveData(IssuesToBeAdded,”newIssuesInLocalStorage”);

                     Refresh(‘Issue List’);

                     ClearCollect(IssueCollection, ‘Issue List’);

                     SaveData(IssueCollection,”issuesInLocalStorage”))

 

             With this, we are all set with saving the offline issues to database as soon as the connection is available and also getting a label to tell us how many issues are offline issues to be saved.

image
 

  • Last thing we need to do is go back to the first screen and on the click of “Let’s Go” button, update the formula to check offline issues from the local cache. This will ensure that if the app was closed last time with some offline issues to be saved, app will retrieve them from local storage and keep trying to save it on internet connection availability (on the IssueListScreen) . So, update the formula of OnSelect event of the button “Let’s Go” to (bolded part is the new addition in the earlier formula):

If(Connection.Connected, ClearCollect(IssueCollection, ‘Issue List’);SaveData(IssueCollection,”issuesInLocalStorage”),
LoadData(IssueCollection,”issuesInLocalStorage”, true));

LoadData(IssuesToBeAdded,”newIssuesInLocalStorage”, true); Navigate(IssueListScreen,ScreenTransition.Cover)

 

Side note- Caching data is a good strategy for your app performance as well. You can learn more about performance tips for your apps in this blog.

 

 image

 

With this, we are done with building basic offline capabilities in your app. Without internet connection, your user can see the issues cached last time and even add new issues offline (to be synced later on internet connection availability). Keep in mind that your user has to open this app at least once and tap on “Let’s Go” once to ensure “Issue List” is cached once.

 

Conclusion

 

Building offline capabilities makes your app even more compelling for your users (esp. mobile users traveling to places with spotty internet connections). Hopefully this tutorial provided you necessary guidance to build these offline capabilities in your PowerApps app. We excluded Conflict Resolution requirements from the scope of this blog to make this article easily digestible. Most of the customer scenarios we heard don’t even need conflict resolution. However if many of you need help implementing conflict resolution requirements, let us know. We’ll be happy to do another blog on that topic. Happy App Building!

The post Implementing Offline Capability In Your App appeared first on Microsoft Power Platform Blog.

]]>