Item classification reference

Overview

Item classification is the process of assigning a series of labels to an item from a predefined list of labels. Specific industries or regions have data privacy laws and data compliance regulations that require items to be classified in order to protect, and control access to, sensitive information. Though the specifics of each data protection law, regulation, or standard may vary, all require that data is classified, and all will perform audits to ensure that organizations are in compliance.

ArcGIS Enterprise administrators (either the default administrator, or an administrator assigned a custom role that includes the Organization website privilege) can define a set of labels that take into account the specific laws or regulations their item classifications need to include. This allows organization members to use those labels to set the level of sensitivity of the data an item has, specify who the information can be accessed by or shared with, and outline when information can be made publicly accessible.

Administrators define these sets of labels through a classification schema. A classification schema is a JSON object that contains a hierarchy of classification and dissemination properties. The schema is provided as a JSON file and assigned to the organization, after which all new items added to the organization, and any preexisting items, must be classified.

While classification schemas can be complex, organizations may benefit from creating an initial schema that focuses on a core number of classification labels that cover broad restriction categories. As time goes on, the schema can be updated to include more classification labels to account for any changes to regulation requirements, for internal classification purposes, or to accommodate any new regulations the organization needs to follow.

Defining a classification schema

A classification schema is made up of four sub-objects:

  1. Base properties: the schema's high-level properties.
  2. Classification Metadata: the primary classification label for organization items (e.g. Unclassified, In-confidence, Sensitive, etc.).
  3. Attributes: the various classification and dissemination information used to classify items.
  4. Layouts: the order in which the attributes are presented on the classification form.

Each area is defined in more detail below.

Base properties

A classification schema's base properties are the higher-level properties that define elements of the schema itself and how classification labels will be displayed during and after classification.

The sample code below demonstrates how the base properties have been set up for a specific schema. This sample does not show the full classification schema; the other tabs have code samples that demonstrate more of the schema's syntax.

Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
{
  "name": "academic-institution-classification-schema",
  "version": "2.0",
  "grammarVersion": "2.0",
  "attributeCategories": [],
  "bannerExpression": "function bannerExpression(schemaJsonString, valueJsonString, attributeId) {\n    var valueJson = Dictionary(valueJsonString)\n    var schemaJson = Dictionary(schemaJsonString)\n    var selectionText = \"\"\n    if (HasKey(valueJson, \"classification\")) {\n        selectionText = selectionText + valueJson[\"classification\"]\n        if (HasKey(valueJson, \"distribution\")) {\n            selectionText = selectionText + \"//\" + valueJson[\"distribution\"]\n        }\n        if (HasKey(valueJson, \"reviewDate\") && valueJson[\"classification\"] != \"Unclassified\") {\n            selectionText = selectionText + \"/\" + \"To be reviewed on\" + \" \" + valueJson[\"reviewDate\"]\n        }\n    }\n    return selectionText;\n}\nbannerExpression(schemaJsonString, valueJsonString, attributeId)",
  "selectionTextExpression": "function selectionTextExpression(schemaJsonString, valueJsonString, attributeId) {\n    var valueJson = Dictionary(valueJsonString)\n    var schemaJson = Dictionary(schemaJsonString)\n    var selectionText = \"\"\n    if (HasKey(valueJson, \"classification\")) {\n        selectionText = selectionText + valueJson[\"classification\"]\n        if (HasKey(valueJson, \"distribution\")) {\n            selectionText = selectionText + \"//\" + valueJson[\"distribution\"]\n        }\n        if (HasKey(valueJson, \"reviewDate\") && valueJson[\"classification\"] != \"Unclassified\") {\n            selectionText = selectionText + \"/\" + \"To be reviewed on\" + \" \" + valueJson[\"reviewDate\"]\n        }\n    }\n    return selectionText;\n}\nselectionTextExpression(schemaJsonString, valueJsonString, attributeId)",
}

There are two properties (bannerExpression and selectionTextExpression) that accept Arcade expressions as an input. The code samples below provide a closer look at Arcade expression examples for each property.

bannerExpression Arcade ExamplebannerExpression Arcade ExampleselectionTextExpression Arcade Example
Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function bannerExpression(schemaJsonString, valueJsonString, attributeId) {
  var valueJson = Dictionary(valueJsonString);
  var schemaJson = Dictionary(schemaJsonString);
  var selectionText = "";
  if (HasKey(valueJson, "classification")) {
    selectionText = selectionText + valueJson["classification"];
    if (HasKey(valueJson, "distribution")) {
      selectionText = selectionText + "//" + valueJson["distribution"];
    }
    if (HasKey(valueJson, "reviewDate") && valueJson["classification"] != "Unclassified") {
      selectionText = selectionText + "/" + "To be reviewed on" + " " + valueJson["reviewDate"];
Expand

The table below outlines the required and optional base properties for the classification schema.

PropertyRequiredDescription
name

Specifies the name of the classification schema.

Use dark colors for code blocksCopy
1
"name": "academic-institution-classification-schema",
version

Specifies the version number of the classification schema. The version can be updated each time the classification schema is modified, though the value that should be assigned to represent that update is up to the discretion of organization administrators.

Use dark colors for code blocksCopy
1
"version": "2.0",
grammarVersion

Specifies the grammar version the schema classification adheres to. This value must match the current grammar version, which is returned by the Classification resource.

Use dark colors for code blocksCopy
1
"grammarVersion": "2.0",
helpTooltip

Sets the help text that is returned whenever a user hovers over the Information button on the classification form.

Use dark colors for code blocksCopy
1
"helpTooltip": "Help and usage instructions",
helpUrl

Sets the URL of the schema help document that is opened when a user clicks on the Information button on the classification form. The help document will open up as a new tab. Help documentation is created, maintained, and hosted by the organization and is not provided by Esri.

Use dark colors for code blocksCopy
1
"helpURL": "https://machine.domain.com/webadaptor/home/ClassificationToolHelp.pdf",
bannerExpression

Generates the banner text for an item using Arcade expressions. After an item has been classified, the classification marking is stored as a JSON object on the item, which includes the banner text, and is returned as part of the item's details. Note that not every classification value needs to be part of an item's banner. Specified or assigned values that are not included as part of the banner text are still retained.

If this property is not included in the schema, or its value is set to an empty string, generic encoding logic for the uiElement, bannerOrder, bannerLabel, labelDelimiter, valueDelimiter, and attributeDelimiter properties are used for the banner text.

Use dark colors for code blocksCopy
1
"bannerExpression": "arcade expression()",
selectionTextExpression

Generates the selection text using Arcade expressions. Selection text is displayed in the Current Selections portion of the classification form. If this property is not included in the schema, or its value is set to an empty string, generic encoding logic for the uiElement, selectionDisplayOrder, selectionDisplayLabel, selectionDelimiter, labelDelimiter, valueDelimiter, and attributeDelimiter properties are used for the selection text. Note that not every classification value displayed as the selection text will be a part of the item's banner. Specified or assigned values that are not included as part of an item's banner text are still retained.

Use dark colors for code blocksCopy
1
"selectionTextExpression": "arcade expression()"
attributeCategories

An array of attribute categories. Attributes assigned one of these categories for their attributeCategory property will be listed under a tab of the same name on the classification form (e.g. an attribute labeled "Declassification Date" that has the value of Must Include for its attributeCategory will have its corresponding input field listed under the Must Include tab on the classification form).

Use dark colors for code blocksCopy
1
"attributeCategories": ["Must Include", "Optional"]

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.