For funsies since I like to poke things with sticks, I wrote an advanced uBAQ to poke Epicor in the nether regions and list out the relevant bits from Ice.ReportStore. There is no code for the .Update bits, it only has a BPM on .GetList to read out the Ice.ReportStore table.
There is some interesting output from my data collection:
It would seem the problem here could be one of two things:
SystemFlag: true makes it readonly and we’re seeing a silent failure on upload
Or, there is a duplicate entry in the Ice.ReportStore table, one of the entries is stored at a different path (capitalization in Reports), and it is marked as SystemFlag = true. I would guess that when uploading, Epicor’s logic is updating one of these entries, and when rendering ssrs, it is rendering the other one (which never gets updated)
The likely fix here is either marking the row SystemFlag = false, or deleting one of these rows (we could tell which one by editing the .rdl to add some identifiable stuff, figuring out which one did not get updated, then deleting that row from Ice.ReportStore)
I’ve let Epicor know in my Case.
Here’s the BAQ If anyone would like to examine their Ice.ReportStore and see if it’s the same problem (SystemFlag = true on a Custom Report Style):
GF_DynamicCSharp.baq (38.3 KB)
GF_DynamicCSharp.GetList/Based Code:
// Here there be dragons
var t = result.Tables[0];
//t.Columns.Add(Ice.IceColumn.Create("ReportName", typeof(String)));
//t.Columns.Add(Ice.IceColumn.Create("IsActive", typeof(Boolean)));
//t.Columns.Add(Ice.IceColumn.Create("SystemFlag", typeof(Boolean)));
var rstore = Db.ReportStore.AsEnumerable();
foreach (var r in rstore) {
var nr = t.NewRow();
nr["PrintProgram"] = r.PrintProgram;
nr["IsActive"] = r.IsActive;
nr["SystemFlag"] = r.SystemFlag;
t.Add(nr);
}
GF_DynamicCSharp.Update/Based Code:
return;