Overview
Business rules may require specific functions or fields to be disabled based on the logged-in user. Create a User Control container to manage the criteria for a User Control View (UCV), such as whether records or fields can be added, edited, deleted, or viewed by a specified user.
While security groups control edit and delete rights at the page level, UCVs control these rights at the column level. A single UCV can control multiple pages in a WebApp if designed correctly and registered to those pages.
Note
Syniti recommends creating a grid container to manage user control criteria. This grid displays data from the user control table, which provides a configuration-based approach to control column states and manage user IDs or email addresses. Instead of hard-coding which columns should be disabled, enabled, or hidden in the UCV, you can easily configure these settings through the grid.
Create the UCV
UCVs are created in a working database (PostgreSQL or SQL Server). Use the following guidelines to create a UCV:
Use a UCV when the control status determinations are to be made based on what is known about the user.
Include the following column aliases in the view:
ccdUserId: Syniti Knowledge Platform (SKP) user’s principal ID. The view filters on the current user listed in this column.
To copy the user’s principal ID, click Profile > Your Name in the SKP.
.png?sv=2026-02-06&spr=https&st=2026-07-01T09%3A26%3A32Z&se=2026-07-01T09%3A39%3A32Z&sr=c&sp=r&sig=gLyGkwo04Lt%2BjKkKTf6hxnTScdj2GlnVmzrc3Y435DA%3D)
ccdColumn: Technical name of the column on the page.
ccdControlStatus: Control status values: disabled (0), enabled (1) and hidden (2).
ccdPageID: (optional) Accepts page IDs. The view filters on the current page listed in this column.
ccdUserEmail: optional) Accepts user email addresses. Functions same as ccdUserID.
ccdUserGroup: (optional) Accepts user group IDs. The view filters on the users added to a user group.
To copy a user group ID, access Admin > User Group, select the intended user group, and then copy the user group ID from the browser’s URL.
.png?sv=2026-02-06&spr=https&st=2026-07-01T09%3A26%3A32Z&se=2026-07-01T09%3A39%3A32Z&sr=c&sp=r&sig=gLyGkwo04Lt%2BjKkKTf6hxnTScdj2GlnVmzrc3Y435DA%3D)
ccdLanguage: (optional) The view filters against the user's language preference.
Use reserved words (such as ccdAdd, ccdEdit, and ccdDelete) to control specific user’s access to update a container.
Run a Scan and Create UCV Dataset
Access the datastore in the Syniti Knowledge Platform (SKP) Catalog module associated with the database where the UCV was created.
Scan the datastore to ingest metadata into the SKP.
Create a dataset using the same view name.
Set the Affected Table field.
Register UCV in a Container
On the Cloud Construct’s home page, edit the required WebApp. The WebApp configuration page is displayed.
Access Pages > Your Page > Grid or Properties Card in the Tree Navigation panel. The Details panel is updated with the Grid or Properties Card fields.
Access the Data section and select the newly created dataset from the User Control View Dataset list.
Click Save & Preview WebApp
to preview WebApp changes.Click Save WebApp
.
Note
The Update UCV button opens a dialog box that allows you to rescan the dataset and add any newly available fields from the underlying view to the UCV dataset used in this container.
Specify the dataset classification.
If the scan errors out, access the associated Datastore’s scan logs in the SKP Catalog module to troubleshoot the error.
Example
Below is an example of a view that creates a UCV dataset in the SKP.
View DDL
CREATE VIEW [dbo].[ucv_customers] AS
SELECT
r.ColumnName AS ccdColumn, -- Specifies column names and reserved words
r.ControlStatus AS ccdControlStatus, -- Specifies the control status for those columns
r.UserId AS ccdUserId -- Specifies User's principal IDs
FROM dbo.ucv_user_rules r
WHERE r.Container = 'customers';
GOCREATE TABLE [dbo].[ucv_user_rules](
[UserId] [nvarchar](200) NOT NULL, -- Enter User's principal IDs
[Container] [varchar](50) NOT NULL, -- Optional; For reference purpose
[ColumnName] [varchar](100) NOT NULL, -- Enter other container's column names
[ControlStatus] [varchar](10) NOT NULL -- Specify control statuses for those columns
) ON [PRIMARY]