Create Group Smart Service

Summary

The Create Group smart service allows you to add new groups at runtime via process model.

This activity allows you to display a form for your users to fill out, which creates a group based on the information they submit. Alternatively, you can also set all the required node inputs at design time.

  • This smart service was previously called Create Custom Group.
  • This smart servive has been enhanced to support Group Type as opposed to just Text. As a consequence, group types can be tracked as precedents.

Permissions Needed

The Assignment tab allows you to specify a user account that is assigned the activity, or to run the activity automatically – taking the process designer or the process initiator's user account for security purposes. You can only run this activity as a user that is a system administrator or in the process administrator's role. (Other users, such as members of the Portal Administrators group cannot execute this activity.)

Attempting to execute this task as a basic user causes a run-time exception that pauses the process and sends an alert to the process administrator.

Properties

  • Category: Identity Management

  • Icon:

  • Assignment Options: Attended/Unattended

Configuration Options

This section contains tab configuration details specific to this smart service. For more information about common configurations see the Process Node Properties page.

Data Tab

Node Inputs

Name Type Required Multiple Default Value Comments
Name Text Yes No

The following characters are not allowed in group names.

/ \ < > " , . * '

Description Text No No
Group Type Group Type Yes No You must select a group type for the node input. This data cannot be collected from users at runtime, from an associated form.
Delegated Creation? Integer No 0 (No) The default values are Yes or No. The integer 1 equals yes. 0 equals no.
Parent Group Group No No The user account that activates this activity must have Administrator rights for the parent group in order to add this new group as a child.
Membership Policy Number Yes No Closed Default value options: Closed, Exclusive, Automatic
Visibility Number Yes No Public Default value options: Public, Personal, Restricted
Privacy Policy Number Yes No Low Default value options: Low, High

If the activity is run without being assigned to a user (or a group) you must specify values for each of the required node inputs listed.

Selecting a Personal visibility input value sets other associated node input values automatically. Be aware that the node input lists on the Data tab and the dropdown lists displayed task form are not automatically filtered when this happens to show only valid options for the Visibility. Any invalid selections (made by you at design time, or by your users at runtime) are ignored when the group is created.

If the Visibility input is set to Personal, the following settings are configured automatically.

  • The Group Type input is set to Custom
  • No value can be specified for the Parent Group node input.
  • The Membership Policy node input is set to Closed.
  • The Group Privacy node input is set to High.

Node Outputs

Name Data Type Description
New Group Group This activity returns the group created.

You can save this group into a process variable in the following manner.

  1. Select the Outputs property sheet (tab).
  2. Click group on the Results list. The Result Properties are displayed.
  3. Create a new Process Variable to store the result, or select an existing Process Variable with a Group data type from the available list.

a!createGroup()

The Create Group smart service is available as an expression function that can be executed inside a saveInto on a Interface Component or as part of a Web API.

Syntax

a!createGroup(name, description, groupType, delegatedCreation, parent, membershipPolicy, securityType, groupPrivacy, onSuccess, onError)

Inputs

  • name (Text): The name of the group.
  • description (Text): The description of the group.
  • groupType (Text): The type of the group.
  • delegatedCreation (Boolean): Should administrators of this group be permitted to create additional groups as children? Default: false.
  • parent (Group): The group's parent. You must be an administrator of this group.
  • membershipPolicy (Text): The membership policy of the new group. Valid values: CLOSED (default), EXCLUSIVE, AUTOMATIC.
  • securityType (Text): The security type of the new group. Valid values: PUBLIC (default), PERSONAL, RESTRICTED.
  • groupPrivacy (Text): The privacy policy of the new group. Valid values: LOW (default), HIGH.
  • onSuccess (Any Type): A list of saves or an HTTP response to execute after the smart service executes successfully. Created with a!save() or a!httpResponse(). The following function variable is available when configuring this input:
    • fv!group (Any Type): The group that was created.
  • onError (Any Type): A list of saves or an HTTP response to execute when the smart service does not execute successfully. Created with a!save() or a!httpResponse().

Returns

Example

The following is a simple example that allows you to create, edit, and delete a group using an interface.

These actions need to be performed in the order mentioned above as the edit and delete actions use the group returned by the Create Group action.

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
=load(
  local!group,
  local!groupName,
  local!groupDescription,
  local!groupType: "Custom",
  local!groupSecurity: "PERSONAL",
  local!groupPrivacy: "LOW",
  a!formLayout(
    label: "Create / Edit / Delete Group Test",
    contents: {
      a!sectionLayout(
        label: "Create Group",
        contents: {
          a!columnsLayout(
            columns: {
              a!columnLayout(
                contents: {
                  a!textField(
                    label: "Name",
                    value: local!groupName,
                    saveInto: local!groupName,
                    refreshAfter: "UNFOCUS"
                  ),
                  a!paragraphField(
                    label: "Description",
                    value: local!groupDescription,
                    saveInto: local!groupDescription,
                    refreshAfter: "UNFOCUS"
                  )
                }
              ),
              a!columnLayout(
                contents: {
                  a!textField(
                    label: "Type",
                    value: local!groupType,
                    saveInto: local!groupType,
                    readOnly: true,
                    refreshAfter: "UNFOCUS"
                  ),
                  a!dropdownField(
                    label: "Security",
                    choiceLabels: {"PUBLIC", "PERSONAL", "RESTRICTED"},
                    choiceValues: {"PUBLIC", "PERSONAL", "RESTRICTED"},
                    value: local!groupSecurity,
                    saveInto: local!groupSecurity
                  ),
                  a!dropdownField(
                    label: "Privacy",
                    choiceLabels: {"LOW", "HIGH"},
                    choiceValues: {"LOW", "HIGH"},
                    value: local!groupPrivacy,
                    saveInto: local!groupPrivacy
                  )
                }
              )
            }
          )
        }
      )
    },
    buttons: a!buttonLayout(
      primaryButtons: {
        /* CREATE GROUP */
        a!buttonWidget(
          label: "Create Group",
          style: "NORMAL",
          saveInto: {
            a!createCustomGroup(
              name: local!groupName,
              description: local!groupDescription,
              groupType: local!groupType,
              delegatedCreation: false,
              securityType: local!groupSecurity,
              groupPrivacy: local!groupPrivacy,
              onSuccess: {
                a!save(local!group, fv!group)
              },
              onError: {}
            )
          },
          submit: true
        ),

        /* EDIT GROUP */  
        a!buttonWidget(
          label: "Update Group",
          style: "NORMAL",
          saveInto: {
            a!editGroup(
              group: local!group,
              name: local!groupName,
              description: local!groupDescription,
              groupType: local!groupType,
              delegatedCreation: false,
              securityType: local!groupSecurity,
              groupPrivacy: local!groupPrivacy,
              onSuccess: {},
              onError: {}
            )
          },
          disabled: if(isnull(local!group),true,false),
          submit: true
        ),

        /* DELETE GROUP */  
        a!buttonWidget(
          label: "Delete Group",
          style: "NORMAL",
          saveInto: {
            a!deleteGroup(
              group: togroup(local!group), /* Converts the local variable from Any Type back to Group */
              onSuccess: {},
              onError: {}
            ),
            a!save(local!group, null),
            a!save(local!groupName, null),
            a!save(local!groupDescription, null)
          },
          disabled: if(isnull(local!group), true, false),
          submit: true
        )     
      }
    )
  )
)
FEEDBACK