User Defined Object (UDO) security vs row security for shop floor data access control

We’re designing access controls for our shop floor management system in JDE 9.2.1 and need to decide between UDO security and row security for restricting production data visibility. Our requirement is that plant supervisors should only see work orders and production data for their assigned manufacturing lines, while plant managers need full visibility across all lines within their facility.

I understand both UDO security configuration and row security setup can achieve this, but I’m trying to understand the access control best practices and which approach is more maintainable long-term. We have 8 manufacturing facilities with 3-5 production lines each, and the supervisor assignments change quarterly based on production schedules.

What are the trade-offs between these two security models for this type of use case? Any concerns about data exposure risk with either approach?

Row security performance depends heavily on your predicate design. If you’re filtering on indexed fields like business unit or work center, the overhead is minimal - typically adding 5-10% to query execution time. The real performance hit comes when the security predicate requires complex joins or subqueries. For supervisor assignments that change quarterly, I’d recommend maintaining an assignment table that maps users to production lines with effective date ranges. Your row security view can simply join to this table, and reassignments are just data changes without any security view modifications. This keeps the security logic stable while allowing flexible assignment management.

Based on the discussion, let me provide comprehensive guidance on implementing access control for your shop floor data:

UDO Security Configuration: UDO (User Defined Object) security operates at the business object level. You configure UDO security by defining security policies on specific business objects - for example, you could create a policy on the Work Order Master UDO that grants or denies access to the entire object. This is useful for role-based access where certain user groups should have no access to specific business functions. However, it’s binary - users either have access to all work orders or none. This doesn’t meet your requirement for production line-based filtering.

UDO security is configured through Security Workbench (P98OWSEC) where you define object-level permissions. It’s processed early in the request lifecycle, making it efficient, but it lacks the granularity needed for data-level filtering within objects.

Row Security Setup: Row security provides data-level filtering by applying predicates to database queries. For shop floor management, you implement this by creating a security view that encapsulates the filtering logic. The view joins production tables (work orders, production schedules, material transactions) with a user-to-production-line assignment table.

Implementation approach for your scenario:

  1. Create a USER_PRODUCTION_LINE_ASSIGN table mapping users to production lines with effective dates
  2. Build a security view that joins F4801 (Work Order Master) with your assignment table filtered by current user
  3. Configure JDE applications to use the security view instead of base tables for supervisor-level access
  4. Plant managers are assigned a role that bypasses row security or has assignments to all production lines

The quarterly reassignment process becomes a data management task - update the assignment table with new effective dates. No security infrastructure changes required.

Access Control Best Practices: For your use case, row security is the correct approach. Here are key best practices:

  1. Performance Optimization: Design your security predicate to use indexed columns. Index the user-to-production-line assignment table on user ID and effective date ranges. Test query performance with production data volumes before deploying.

  2. Assignment Management: Implement a user-friendly interface for managing supervisor-to-production-line assignments. Include workflow approval for assignment changes since these directly impact data access. Maintain audit history of all assignment changes for compliance.

  3. Hierarchical Security: Use a tiered approach where supervisors see filtered data via row security, while plant managers and executives have broader access through role-based exemptions. This prevents the need to assign managers to every production line individually.

  4. Batch Process Handling: Create dedicated service accounts for batch processes with full data access. Document which processes require unfiltered data access and implement compensating controls like restricted job scheduling and output review.

  5. Testing and Validation: Before deploying, thoroughly test edge cases - what happens when a supervisor transfers between plants? How do you handle temporary coverage assignments? What’s the fallback if the assignment table is unavailable?

Data Exposure Risk Mitigation: Row security reduces data exposure risk by implementing least-privilege access at the database level. Unlike application-level filtering which can be bypassed through direct database access or reporting tools, row security is enforced by the database engine itself.

Key risks to address:

  • Assignment table corruption could grant unintended access - implement integrity constraints and regular validation
  • Service accounts with full access need strict control and monitoring
  • Reporting tools that bypass row security must be locked down to authorized users
  • Document and regularly review which roles have row security exemptions

For your 8-facility, 3-5 lines per facility environment, row security provides the right balance of granularity and maintainability. The quarterly reassignment requirement is easily handled through data updates rather than security infrastructure changes. Focus your implementation effort on optimizing the security predicate performance and building robust assignment management processes.