cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
skywalker
Level: Powered On

PowerBIIntegration.Refresh() issue- Existing App

Hi, 

 

The new PowerBIIntegration.Refresh() functionality within PowerApps is very useful.!

 

One issue I am finding is if I use the PowerApp visual within PowerBI to connect to an existing App I do not get the .Refresh() function available. It only appears when you create a new app from the visual. 

 

Does anybody have a solution for this problem? 

 

Thanks, 

Luke

8 REPLIES 8
Community Support Team
Community Support Team

Re: PowerBIIntegration.Refresh() issue- Existing App

Hi @skywalker ,

 

So far it is known that PowerBIIntegration.Refresh() doesn't work for existing PowerApps. An idea has been submitted here, you can vote on it if you need this feature:

https://powerusers.microsoft.com/t5/PowerApps-Ideas/Add-PowerBIIntegration-Refresh-for-existing-Powe...

 

Regards,

Mona

Community Support Team _ Mona Li
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
skywalker
Level: Powered On

Re: PowerBIIntegration.Refresh() issue- Existing App

Hi Mona, 

 

Actually I did some investigating yesterday on how you convert a mobile app to a tablet app - by modifying the properties.json file within the app. I then started to look at the entities.json file and noticed the powerbiintegration entity was different between an app with the .Refresh() function and an app without. I think will a bit more tinkering I can modify the entities.json file to allow a premade app have the .Refresh() function. 

 

I will keep you updated 

TheSurfer
Level: Powered On

Re: PowerBIIntegration.Refresh() issue- Existing App

Hi @skywalker . 

 

By any chance did you manage to find a workaround to the Refresh() limitation?

 

I've been trying for a while to get Refresh() to work with an existing app and have only just found this thread. Smiley Frustrated It would have saved me around 6 hours if I'd found it earlier.

skywalker
Level: Powered On

Re: PowerBIIntegration.Refresh() issue- Existing App

Hi @TheSurfer

 

I think the only way to do this is to create a new app from PowerBI in the mobile format. Then modify the size of the mobile app. 

 

Instruction on how to do that is here:

https://www.youtube.com/watch?v=Bb_8koHvzw0 

http://toddbaginski.com/blog/how-to-convert-a-powerapp-from-one-layout-to-another

 

I think there would be a way to update the existing files but I need to spend some more time looking into the json files you can extract. I still need to convert a series of existing apps so if I find the solution I will post it here. 

 

If your existing app is using the mobile phone resolution you could copy and paste all the elements from the old app into the new app and all should work. My issue is that my existing apps are in the tablet resolutions. 

 

Good Luck!

skywalker
Level: Powered On

Re: PowerBIIntegration.Refresh() issue- Existing App

Hi @TheSurfer 

 

I have a solution - just tried and tested. All is working OK. 

 

It is a bit involved but this is the principle. 

 

Note: you will need to have your folder settings to display known file extentsion in the file names.

 

1 - Save your app to your local computer (the msapp file)

2 - add .zip to your file extention so you will have myappname.msapp.zip 

3 - extract your zip file to show the contents of the app

4 - within the controls folder there is a file called 1.json we need to update this file to make an existing app compatible. 

5 - open the file. Copy the contents use this website to format the json https://jsonformatter.curiousconcept.com/ 

copy the formatted json and paste it back into the original document. 

The document should now look something like this:

 


   "TopParent":{ 
      "Type":"ControlInfo",
      "Name":"App",
      "Template":{ 
         "Id":"http://microsoft.com/appmagic/appinfo",
         "Version":"1.0",
         "Name":"appinfo",
         "IsCustomGroupControlTemplate":false,
         "CustomGroupControlTemplateName":"",
         "OverridableProperties":{ 
         }
      },
      "Index":0.0,
      "PublishOrderIndex":0,
      "VariantName":"",
      "LayoutName":"",
      "MetaDataIDKey":"",
      "PersistMetaDataIDKey":false,
      "IsFromScreenLayout":false,
      "StyleName":"",
      "Parent":"",
      "IsDataControl":true,
      "IsGroupControl":false,
      "IsAutoGenerated":false,
      "Rules":[ 
         { 
            "Property":"ConfirmExit",
            "Category":"Data",
            "InvariantScript":"false"
         },
         { 
            "Property":"SizeBreakpoints",
            "Category":"Design",
            "InvariantScript":"[1200, 1800, 2400]"
         }
      ],
      "ControlPropertyState":[ 
         { 
            "InvariantPropertyName":"ConfirmExit",
            "AutoRuleBindingEnabled":true,
            "AutoRuleBindingString":"",
            "NameMapSourceSchema":"?",
            "IsLockable":false,
            "AFDDataSourceName":""
         },
         { 
            "InvariantPropertyName":"SizeBreakpoints",
            "AutoRuleBindingEnabled":true,
            "AutoRuleBindingString":"",
            "NameMapSourceSchema":"?",
            "IsLockable":false,
            "AFDDataSourceName":""
         }
      ],
      "IsLocked":false,
      "ControlUniqueId":"1",
      "Children":[ 
      ]
   }
}

 

I have highlighted the section which requires ammending. 

 

Replace the section 

      "Children":[ 
      ]
with 
 
"Children":[ 
         { 
            "Type":"ControlInfo",
            "Name":"PowerBIIntegration",
            "Template":{ 
               "Id":"http://microsoft.com/appmagic/hostcontrol",
               "Version":"1.4.1",
               "Name":"hostControl",
               "IsCustomGroupControlTemplate":false,
               "CustomGroupControlTemplateName":"",
               "HostType":"Dynamic",
               "HostService":{ 
                  "Type":"ServiceInfo",
                  "Name":"PowerBIIntegration",
                  "ServiceKind":"HostWadl",
                  "WadlMetadata":{ 
                     "WadlXml":"<application xmlns:xml=\"http://www.w3.org/XML/1998/namespace\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:service=\"https://powerbi.com\" xmlns:siena=\"http://schemas.microsoft.com/MicrosoftProjectSiena/WADL/2014/11\" siena:serviceId=\"PowerBI\" xmlns=\"http://wadl.dev.java.net/2009/02\">\n                    <doc title=\"PowerApps integration\" />\n                    <resources base=\"https://powerbi.com\">\n                        <resource path=\"/triggers/refresh\">\n                            <method siena:requiresAuthentication=\"false\" name=\"POST\" id=\"Refresh\" siena:isHostFunction=\"true\">\n                                <doc title=\"Triggers a refresh of the PowerBI Report.\" />\n                                <request>\n                                    <param style=\"query\" name=\"api-version\" type=\"xs:string\" required=\"true\" fixed=\"2015-02-01-preview\">\n                                        <doc title=\"The api version\" />\n                                    </param>\n                                    <representation mediaType=\"application/json\" />\n                                </request>\n                            </method>\n                        </resource>\n                    </resources>\n                </application>"
                  }
               },
               "OverridableProperties":{ 
                  "Data":{ 
                     "Version":"1.271",
                     "Type":{ 
                        "Name":"Root",
                        "Kind":"Table",
                        "EnumString":"",
                        "Type":[ 
                           { 
                              "Name":"ID",
                              "Kind":"Number",
                              "EnumString":"",
                              "Type":[ 
                              ]
                           }
                        ]
                     }
                  }
               }
            },
            "Index":0.0,
            "PublishOrderIndex":0,
            "VariantName":"DynamicHostControlVariant",
            "LayoutName":"",
            "MetaDataIDKey":"",
            "PersistMetaDataIDKey":false,
            "IsFromScreenLayout":false,
            "StyleName":"",
            "Parent":"App",
            "IsDataControl":true,
            "IsGroupControl":false,
            "IsAutoGenerated":false,
            "Rules":[ 
               { 
                  "Property":"OnNew",
                  "Category":"Behavior",
                  "InvariantScript":"false"
               },
               { 
                  "Property":"OnEdit",
                  "Category":"Behavior",
                  "InvariantScript":"false"
               },
               { 
                  "Property":"OnView",
                  "Category":"Behavior",
                  "InvariantScript":"false"
               },
               { 
                  "Property":"OnSave",
                  "Category":"Behavior",
                  "InvariantScript":"false"
               },
               { 
                  "Property":"OnCancel",
                  "Category":"Behavior",
                  "InvariantScript":"false"
               }
            ],
            "ControlPropertyState":[ 
               { 
                  "InvariantPropertyName":"OnNew",
                  "AutoRuleBindingEnabled":true,
                  "AutoRuleBindingString":"",
                  "NameMapSourceSchema":"?",
                  "IsLockable":false,
                  "AFDDataSourceName":""
               },
               { 
                  "InvariantPropertyName":"OnEdit",
                  "AutoRuleBindingEnabled":true,
                  "AutoRuleBindingString":"",
                  "NameMapSourceSchema":"?",
                  "IsLockable":false,
                  "AFDDataSourceName":""
               },
               { 
                  "InvariantPropertyName":"OnView",
                  "AutoRuleBindingEnabled":true,
                  "AutoRuleBindingString":"",
                  "NameMapSourceSchema":"?",
                  "IsLockable":false,
                  "AFDDataSourceName":""
               },
               { 
                  "InvariantPropertyName":"OnSave",
                  "AutoRuleBindingEnabled":true,
                  "AutoRuleBindingString":"",
                  "NameMapSourceSchema":"?",
                  "IsLockable":false,
                  "AFDDataSourceName":""
               },
               { 
                  "InvariantPropertyName":"OnCancel",
                  "AutoRuleBindingEnabled":true,
                  "AutoRuleBindingString":"",
                  "NameMapSourceSchema":"?",
                  "IsLockable":false,
                  "AFDDataSourceName":""
               }
            ],
            "IsLocked":false,
            "ControlUniqueId":"8",
            "Children":[ 
            ]
         }
      ]
 
6 - save the file and copy the file 1.json. 
7 - open the zip file we previously extracted using winrar.
8 - paste the 1.json file into the controls folder. The existing file will be updated. You can see this from the modified date of the file.
9 - remove the .zip from the file extention. You may need to move the zipped file to a new location if you receive an error message stating the file already exists. This is because the extracted folder name is the same. 
10 - open the file into powerapps and then connect to the powerbi report. The .Refresh() function should be available. 
 
Any problems let me know. 
 
Thanks, 
Luke
 
TheSurfer
Level: Powered On

Re: PowerBIIntegration.Refresh() issue- Existing App

Hi @skywalker 

I tried the workaround and it...

  • didn't break the PowerApp Smiley Happy
  • did appear to force a refresh in the PowerBI report Smiley Happy
  • didn't refresh the data in the report Smiley Sad

I think I may know the issue. It's here now, sitting between the keyboard and the chair.  Smiley Embarassed

 

What I should have said was, the data is in an O365 SharePoint List with the refresh schedules set at hourly intervals.

 

From what I now understand PowerBI will only refresh from O365 SharePoint lists at the set intervals, and the PowerBIIntegration.Refresh() will not intiate a commanded refresh.  Could you confirm , please.

 

I'm sure this does works with other live data sources. Thanks for taking the time to help out. Smiley Wink

skywalker
Level: Powered On

Re: PowerBIIntegration.Refresh() issue- Existing App

Hi @TheSurfer 

 

I think your observations are correct, this function is not going to initiate a commanded refresh of your data sets. It is essentially the same as hitting the refresh button when viewing a report. 

 

The reports I am using this for are all direct query so I see the results as expected from .Refresh()

 

I hope this helps. 

senpaicoder
Level: Powered On

Re: PowerBIIntegration.Refresh() issue- Existing App

Hi @skywalker,

Sorry if my response came a bit late... though I just want to confirm that I tested your solution and it worked fine in my case.
I thought it would be fair to give you a kudo. 😉

So to make a long story short, I took a standalone PowerApps application version which I had previously created and which
was connected to an Azure SQL Server database.
At this stage, as you may expect, trying to add the PowerBIIntegration.Refresh() method would have thrown an incompatibility error message.
Something was obviously missing. I thought this might be a good candidate to test and I decided to give your formula a try and see what I could come up with. I basically went through the very same steps you mentioned, i.e. downloading the .msapp file, extracting and modifying the 1.json section.
I then decided to delete the existing PowerApps application I had downloaded to avoid any conflict and uploaded the new modified msapp file version.
So far so good... I could then add PowerBIIntegration.Refesh() with no compatibility error.
The final step... I added the modified PowerApps version into a Power BI report - which was connected to the very same Azure SQL Server database
in DirectQuery mode - made some data updates though a PowerApps edit form - and voila... Power BI content updated instantly. Coooool.
I think we may have something here. Some may claim it may be a bit risky and the not best solution... but hey it worked pretty well on my side and I'm happy with that...

Thanks for sharing.

Helpful resources

Announcements
thirdimage

Coming Soon: T-Shirt Design Contest

Keep your eyes open for our upcoming T-shirt design contest!

thirdimage

Power Apps Community User Group Member Badge

Fill out a quick form to claim your user group badge now!

sixthImage

Power Platform World Tour

Find out where you can attend!

Power Platform 2019 release wave 2 plan

Power Platform 2019 release wave 2 plan

Features releasing from October 2019 through March 2020

Top Solution Authors
Top Kudoed Authors
Users online (6,297)