Power BI embedded report - USERNAME() function returns service principal id instead of username
We have developed a .Net web application where we embed Power BI reports in the App-Owns-Data scenario, ie. with the use of service principal.
With each request to view a report the embedToken is generated depending on the report metadata, ie. it checks what datasets it is using, whether these datasets require EffectiveIdentity etc. In other words it constructs the token according to the requirements.
In case of mixed-storage reports (composite-models) which are using two or more datasets this token generation used to work fine and we were passing the username parameter in the EffectiveIdentity element to apply the RLS in the datasets, but since recently this functionality stopped working. Normally we used the USERPRINCIPALNAME or USERNAME function to retrieve the username parameter to apply the RLS in DAX, but now in case of mixed-storage reports these functions (USERPRINCIPALNAME, USERNAME and USEROBJECTID) are all returning service principal id (in guid format).
We updated the libraries of the application to use the most up-to-date ones but this gave no effect. Our conclusion is that something was changed in PowerBI Service itself.
It is worth noting that it all works fine in case of reports based on single dataset.
Has anyone run into the same issues recenlty in their embedded solutions?
There was a general issue in recent 2 weeks related to embedding reports with composite models (with DirectQuery to Power BI dataset). I don't know if the issue you encountered is from the same reason, but AFAIK that issue was resolved by Power BI so maybe you can try testing your scenario again.