The OneStream Community is temporarily frozen until June 29th due to the ongoing maintenance. Please read the blog post here to learn more.
Forum Discussion
rmichaelsmi
2 years agoNew Contributor II
updating a lot of UD Text# fields is taking forever, what is a faster way?
What I have found is that using the BRApi.Finance.Members.GetMemberInfo or Metadata.GetMember calls with True for includeProperties or even the first call to BRApi.Finance.UD.Text(...) all incur an a...
photon
2 years agoContributor
Have you tried using something like BRApi.Finance.Members.ReadMemberPropertiesNoCache? I'm using one of the adjacent functions and I'm able to compare descriptions from our source system to OS in no time at all. Saving an update costs about 1 second but if there are no changes it takes just a few seconds to run through ~5,600 source records.
rmichaelsmi
2 years agoNew Contributor II
I had looked at that briefly, but wasn't sure of the true impact of the nocache. Sounds like it would be worth a try as I would expect most of the Text fields to remain somewhat static once initially corrected. Limiting the cost to only when an update is needed is definitely a goal. WIll let you know.
Did you also try ReadWriteableMemberNoCahce, by chance?
- photon2 years agoContributor
Yup! That's the start and I then expose VaryingMemberProperties and then EntityVMProperties to check/update a whole bunch of properties.
- photon2 years agoContributor
Although, I guess I should point out that the reason I didn't suggest my particular method is because the snippets around this method come pre-populated with warnings about how it doesn't update the metadata updates table and you mentioned this might annoy your SOX auditors. Of course, SOX auditors love to audit things that have nothing to do with SOX and they shouldn't even be looking at but that's a little off-topic. If you need the official metadata update tables to be kept in sync then you could write code to update them (I should probably look into this for our purposes.) Alternatively, create your own table to track these updates separately or (as I have done) just write all updates out to a CSV and email them.
The first time I ran this in our Dev environment, it updated 5,000 members in about an hour. Since then, it mostly makes 0 updates and runs in 15 seconds.