Hide Calc Fields BPM

Hi -

I am hoping for help on how I could mask calculated fields (set to 0 for viewing) in Job Tracker → Operations grid view tab using a BPM?

If I am understanding the question, you want to 0 some fields in the grid based on a user, security group or all?

Do a trace on when that grid is populated and then post processing on that method reset the field value.

1 Like

My curiosity is piqued. Why?

Correct, we want to do it by security group. I tried tracing it but it didn’t show a method to use.

@klincecum We do something like this to hide employee numbers because if you can see labor cost and labor time you can figure out a pay rate (:frowning:

1 Like

Operations are going to be loaded with GetByID. If you want labor details then those come from when the retrieve button is hit.

Awesome, thank you. Would that be in the JobEntry service name? @gpayne

Take a look at Field Security Maintenance Data Masking section, see if that suffices.


Yes, do as @hkeric.wci says,

Field security works on UD fields, you just need to specify the UD table with ‘_UD’ (see below). Then select the type of masking you need in the Default Access and then set the masking specifics. Way easier than messing with BPM’s and missing a trigger that exposes your data.

Watch out with the masking though. We tried it, and it ended up writing the masked value to the database. So make sure you test first.

1 Like

We are trying to hide Epicor calculated fields such as EstLaborCost which does not show up on field security unfortunately.

Ah, sorry I missed the distinction…
Actually I did this awhile back in Job Tracker > Operations > Labor Transactions so that employees using MES Job Tracker couldn’t see what other employee’s rate was.
I’ll have to find the BPM…

1 Like

Here is the Method I used to hide costs in Job Tracker, this is related to Labor records so in this case it shouldn’t write back, but you could also add a Data directive on the would be affected table to check that the value isn’t changed or isn’t your mask.
Method: Erp.BO.LaborDtlSearch.GetRows / Post Processing

First use a condition to check the security group of the calling user, that the AssemblyName is ‘Erp.UI.JobTracker’ (this is for classic, Kinetic may be a different method and AssemblyName)

If True then use the Set Field Widget to set the result.YOURFIELD to your mask value.

Please note, this isn’t true masking, we are changing the value in the result DataTable that the UI is using to populate the grid.

If it’s a true calc field then this should work without any data issues. If the field is directly mapped to a database field it would be better to use Field Security Masking.


What @Rick_Bird said should work for you. The other option would be to Customize the Grid, however the value may be used in other places, therefore a BPM is your “remove value, everywhere” best bet. It is not always without consequence, sometimes that value is used to determine another value and blanking it or 0 it, may yield odd behavior, most of the time it’ll be just fine.

Thats odd, and interesting, and crazy.