Prevent child records from displaying on parent table

Marcel H_
Tera Guru

Ok, so I'm sure that I'm just having a bone-head moment, and there is probably a simple configuration for what I want, but I've been configuring so many different things recently that when I noticed this situation, I think that I'm just spinning my wheels looking for something.

Basically I've extended some base tables, in this case sys_user, core_company and cmn_location, while working on a project for an internal team that wants to use SN to do after action review reports. These reports may contain records related to VIP clients, contract partners specific only to their operations (I don't want them to have to sift through 100s of other company names, or expose those records to others) and locations that are not a part of our typical day to day operations. I figured extending the above tables would give me most of the fields that I need without having to reinvent the wheel for this type of data.

Now, the issue that I'm having is that while these are in extended tables (I'll use sys_user as my example) the child table's records are showing up in the parent table modules as well. For example, I will go to User Administration> Users and search for TestUser in the "Name" field. Now in this case, I know for certain that TestUser is only on one of the extended child tables of sys_user, but shows up anyway with all the other records on the parent table. I can change the application menu to filter on Class=User, but we do have staff that need to be able to filter the list, but I still don't want them seeing these child records.

I see that on Task I can see all the child records of various tables too, but for some reason I expect that. I know also that I've extended other tables like sc_request and don't see the child records on the parent table, even as an admin.

Basically what I want is unless someone can specifically see the modules that are related to these extended tables, those records are completely hidden to everyone except a specific role, and not in a way that can be circumvented (like a list filter).

If I have to bite the bullet and make a brand new table and define all the various fields, I will do so, but I'd prefer not to (since I've already done the work), and I'm not sure what would prevent the same thing from happening again unless I made a new table for each type of "User" record I need to reference. Any help is greatly appreciated. Thanks!

7 REPLIES 7

SanjivMeher
Kilo Patron
Kilo Patron

You can exclude sys_class_name!=your child table name.


You may need to create sys_class_name if it doesnt exists.



Also you can write a Query business rule to exclude child table, which someone queries user table



Please mark this response as correct or helpful if it assisted you with your question.

Thanks Sanjiv. I've done some additional testing and our typical itil users can't see the records based on the ACLs that we have in place for the child tables, but I'd like to prevent even the message "Number of rows removed from this list by Security constraints:" from appearing. Can you elaborate a bit more on the exclusion based on sys_class_name?



Also with a Query business rule, am I correct in assuming that this would require Advanced to be used and a script written? I'm still learning more about javascript so am not very familiar with building a proper script to prevent display of the records. Failing that I may just build out a new table mimicking the fields I need from sys_user so that I can make 100% sure that I can hide all the data from everyone.



Thanks so much for your help!


You can remove the ACL and instead put a business rule.


Create a field 'sys_class_name' in you parent table. Check if it aleardy exists. Then you can utilize that field.


Below is an example of task table. Set the default value to for the new field to





For all child table, sys_class_name will be set to child table name.


find_real_file.png


below is a business rule to restrict it users from view inactive groups while quering Group table. You can write similar business rule on your parent table.



In when to run, check the query box. Add some filter condition for ex class name = child class name


find_real_file.png


find_real_file.png



Please mark this response as correct or helpful if it assisted you with your question.

Hi Sanjeev this works fine, but that creates an overhead on the instance because the query business rule runs on every time we query the parent table from anywhere, is there any way to prevent the overhead or run the business rule only when retrieving the list of records?