If you need marketing users to be able to access data records but do not want them to see recipient Personally Information (PI), such as first name, last name or email address, apply the guidelines below to protect privacy and prevent data from being misused by regular campaign operators.
A specific attribute that can be applied to any element or attribute has been added to the schemas, it complements the existing attribute visibleIf. This attribute is: accessibleIf. When containing an XTK expression related to the current user context, it can leverage HasNamedRight or $(login), for instance.
You can find a sample of a recipient schema extension that shows this usage below:
<srcSchema desc="Recipient table (profiles" entitySchema="xtk:srcSchema" extendedSchema="xxl:nmsRecipientXl"
img="nms:recipient.png" label="Recipients" labelSingular="Recipient"
name="recipient" namespace="sec" xtkschema="xtk:srcSchema">
<element desc="Recipient table (profiles" img="xxl:recipient.png" label="Recipients"
labelSingular="Recipient" name="recipient">
<attribute name="firstName" accessibleIf="$(login)=='admin'"/>
<attribute name="lastName" visibleIf="$(login)=='admin'"/>
<attribute name="email" accessibleIf="$(login)=='admin'"/>
</element>
</srcSchema>
The main properties are:
Here are the consequences of using this attribute in Campaign:
Using the accessibleIf attribute on critical parameters (such as those in composite keys) can result in errors for users that are not allowed to read the data due to hidden data. This may lead to query failures or unexpected behavior. Ensure essential parameters are accessible to prevent disruptions.
In each delivery, email addresses are copied into the broadLog and the forecastLog tables: as a consequence, those fields need to be protected too.
Below is a sample of log table extension to implement this:
<srcSchema entitySchema="xtk:srcSchema" extendedSchema="nms:broadLogRcp" img="nms:broadLog.png"
label="Recipient delivery logs" labelSingular="Recipient delivery log"
name="broadLogRcp" namespace="sec" xtkschema="xtk:srcSchema">
<element img="nms:broadLog.png" label="Recipient delivery logs" labelSingular="Recipient delivery log"
name="broadLogRcp">
<attribute accessibleIf="$(login)=='admin'" name="address"/>
</element>
</srcSchema>
<srcSchema desc="Delivery messages being prepared." entitySchema="xtk:srcSchema"
extendedSchema="nms:tmpBroadcast" img="" label="Messages being prepared"
labelSingular="Message" name="tmpBroadcast" namespace="sec" xtkschema="xtk:srcSchema">
<element desc="Delivery messages being prepared." label="Messages being prepared"
labelSingular="Message" name="tmpBroadcast">
<attribute accessibleIf="$(login)=='admin'" name="address"/>
</element>
</srcSchema>
<srcSchema entitySchema="xtk:srcSchema" extendedSchema="nms:excludeLogRcp" img="nms:excludeLog.png"
label="Recipient exclusion logs" labelSingular="Recipient exclusion log"
name="excludeLogRcp" namespace="sec" xtkschema="xtk:srcSchema">
<element img="nms:excludeLog.png" label="Recipient exclusion logs" labelSingular="Recipient exclusion log"
name="excludeLogRcp">
<attribute accessibleIf="$(login)=='admin'" name="address"/>
</element>
</srcSchema>
This restriction applies to non technical users only and does not isolates data: a technical user, with related permissions, can retrieve data.