cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Anonymous
Not applicable

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

10 REPLIES 10
v-monli-msft
Community Support
Community Support

Hi @Anonymous ,

 

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-PowerApps/idi-p/257073

 

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.
Anonymous
Not applicable

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 

Hi @Anonymous . 

 

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.

Anonymous
Not applicable

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!

Anonymous
Not applicable

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
 

Hi @Anonymous 

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

Anonymous
Not applicable

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. 

Hi @Anonymous,

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.

I tried the same, but no luck, even PowerBIIntegration.Data also gone. Strange.

Helpful resources

Announcements
PA User Group

Welcome to the User Group Public Preview

Check out new user group experience and if you are a leader please create your group

MBAS Attendee Badge

Claim Your Badge & Digital Swag!

Check out how to claim yours today!

secondImage

Are Your Ready?

Test your skills now with the Cloud Skill Challenge.

secondImage

Demo Extravaganza is Back!

We are excited to announce that Demo Extravaganza for 2021 has started!

MBAS on Demand

Microsoft Business Applications Summit sessions

On-demand access to all the great content presented by the product teams and community members! #MSBizAppsSummit #CommunityRocks

Top Solution Authors
Top Kudoed Authors
Users online (42,098)