/
Handling the PP Report (Xml Format)

Handling the PP Report (Xml Format)

We need to handle the Power BI section XML for the Dataverse before update the table systmeform (attribute "formxml") : prepare the dataverse object to be sent to the database.

Creating the SystemForm object

public static DataverseModel.SystemForm HandleReportXmlForDataverse(BuilderObjects.Report report, ValidatedContext validatedContext) { var groupId = report.GroupIdInPP; var reportId = report.ReportIdInPP; var pbiUrl = report.URLInPP; etc ... var powerBiSectionXml = "<section id=\"" + report.SectionIdInPP + "\" locklevel=\"0\" showlabel=\"" + report.SectionShowLabel.ToString().ToLower() + "\" IsUserDefined=\"0\" name=\"" + str6 + "\" labelwidth=\"115\" columns=\"1\" layout=\"varwidth\" showbar=\"false\"><labels><label description=\"" + text4 + "\" languagecode=\"1033\" /></labels><rows><row>" + string.Format("<cell id=\"{0:B}\" showlabel=\"true\" rowspan=\"{1}\" colspan=\"1\" auto=\"false\">", (object)Guid.NewGuid(), (object)rowspan) + "<labels><label description=\"Power BI Report\" languagecode=\"1033\" /></labels><control id=\"filteredreport\" classid=\"" + classId + "\"><parameters><PowerBIGroupId>" + groupId + "</PowerBIGroupId><PowerBIReportId>" + reportId + "</PowerBIReportId><TileUrl>" + pbiUrl + "/reportEmbed?reportId=" + reportId + "</TileUrl>" + aliaddataverse + "</parameters></control></cell></row></rows></section>"; string _fetchXml = string.Empty; _fetchXml = _fetchXml.Replace(new Regex("<section[^>]+" + report.SectionIdInPP + ".*?<\\/section>").Match(_fetchXml).Value, powerBiSectionXml); return new DataverseModel.SystemForm() { FormId = new Guid(validatedContext.formAccountId), FormXml= _fetchXml }; }

Publishing the SystemForm Object in Dataverse

foreach(var r in reportsDmpps) { var sf = ManagerObject.HandleReportXmlForDataverse(r, validatedContext); //function called above serviceProvider.GetRequiredService<DataverseRepository<DataverseModel.SystemForm>>().Save(sf); var parameterXml = Util.Util.GenerateParameterEntity(ObjectTypeCode.systemform); var publishRequest = Util.Util.CreatePublishXmlRequest(parameterXml); serviceProvider.GetRequiredService<DataverseRepository<DataverseModel.SystemForm>>().Execute(publishRequest); }