Atlassian uses cookies to improve your browsing experience, perform analytics and research, and conduct advertising. Accept all cookies to indicate that you agree to our use of cookies on your device.
Atlassian uses cookies to improve your browsing experience, perform analytics and research, and conduct advertising. Accept all cookies to indicate that you agree to our use of cookies on your device. Atlassian cookies and tracking notice, (opens new window)
Whoever can claim a license needs OPTIN on the group
Whoever can run the Custom UI needs view on the group. Maybe this is just GrouperAll
Configure
Configurations are done in the UI (Miscellaneous → Custom UI) or in grouper.properties
Example of PIT provisioning variable. See if the membership for the user in the app has been provisioned for a certain group in a provisioner more than 5 minutes ago (postgres)
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.0.bindVar0 = \u0024{subject.id}
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.0.bindVar0Type = string
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.0.configId = grouper
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.0.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.0.label = Has Jira license provisioned to cloud more than 5 minutes ago
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.0.query = select case when exists ( select 1 from grouper_sync_group gsg, grouper_sync_membership gsmem, grouper_sync_member gsm, grouper_sync gs where gsg.group_name = 'penn:isc:ait:apps:atlassian:groupsJira:jira_has_license' and gsm.subject_id = ? and gs.provisioner_name = 'atlassianCloudJira' and gsg.grouper_sync_id = gs.id and gsm.grouper_sync_id = gs.id and gsmem.grouper_sync_group_id = gsg.id and gsmem.grouper_sync_member_id = gsm.id and gsmem.in_target_start < current_timestamp - (5 * interval '1 minute') ) then 1 else 0 end as has_license_provisioned
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.0.userQueryType = sql
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.0.variableToAssign = cu_jiraHasLicenseProvisioned
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.0.variableType = boolean
Query
select
case
when exists (
select
1
from
grouper_sync_group gsg,
grouper_sync_membership gsmem,
grouper_sync_member gsm,
grouper_sync gs
where
gsg.group_name = 'penn:isc:ait:apps:atlassian:groupsJira:jira_has_license'
and gsm.subject_id = ?
and gs.provisioner_name = 'atlassianCloudJira'
and gsg.grouper_sync_id = gs.id
and gsm.grouper_sync_id = gs.id
and gsmem.grouper_sync_group_id = gsg.id
and gsmem.grouper_sync_member_id = gsm.id
and gsmem.in_target_start < current_timestamp - (5 * interval '1 minute') ) then 1
else 0
end as has_license_provisioned
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.0.bindVar0 = \u0024{subject.id}
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.0.bindVar0Type = string
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.0.configId = grouper
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.0.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.0.label = Has Jira license provisioned to cloud more than 5 minutes ago
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.0.query = select case when exists ( select 1 from grouper_sync_group gsg, grouper_sync_membership gsmem, grouper_sync_member gsm, grouper_sync gs where gsg.group_name = 'penn\u003Aisc\u003Aait\u003Aapps\u003Aatlassian\u003AgroupsJira\u003Ajira_has_license' and gsm.subject_id = ? and gs.provisioner_name = 'atlassianCloudJira' and gsg.grouper_sync_id = gs.id and gsm.grouper_sync_id = gs.id and gsmem.grouper_sync_group_id = gsg.id and gsmem.grouper_sync_member_id = gsm.id and gsmem.in_target_start < current_timestamp - (5 * interval '1 minute') ) then 1 else 0 end as has_license_provisioned
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.0.userQueryType = sql
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.0.variableToAssign = cu_jiraHasLicenseProvisioned
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.0.variableType = boolean
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.1.bindVar0 = \u0024{subject.id}
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.1.bindVar0Type = string
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.1.configId = grouper
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.1.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.1.label = Has Jira license
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.1.query = select case when exists ( select 1 from grouper_sync_group gsg, grouper_sync_membership gsmem, grouper_sync_member gsm, grouper_sync gs where gsg.group_name = 'penn\u003Aisc\u003Aait\u003Aapps\u003Aatlassian\u003AgroupsJira\u003Ajira_has_license' and gsm.subject_id = ? and gs.provisioner_name = 'atlassianCloudJira' and gsg.grouper_sync_id = gs.id and gsm.grouper_sync_id = gs.id and gsmem.grouper_sync_group_id = gsg.id and gsmem.grouper_sync_member_id = gsm.id ) then 1 else 0 end as has_license
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.1.userQueryType = sql
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.1.variableToAssign = cu_jiraHasLicense
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.1.variableType = boolean
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.10.fieldNames = members
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.10.groupName = penn\u003Aisc\u003Aait\u003Aapps\u003Aatlassian\u003Aadmin\u003AatlassianCanAssignVariablesCustomUi
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.10.label = Atlassian admin
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.10.userQueryType = grouper
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.10.variableToAssign = cu_atlassianAdminCanAssignVariables
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.10.variableType = boolean
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.11.fieldNames = members
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.11.groupName = penn\u003Acommunity\u003Aauthentication\u003AtwoStepUsers
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.11.label = In two-step
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.11.userQueryType = grouper
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.11.variableToAssign = cu_inTwoStep
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.11.variableType = boolean
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.2.fieldNames = members
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.2.groupName = penn\u003Aisc\u003Aait\u003Aapps\u003Aatlassian\u003AhelperGroups\u003AjiraAutomaticLicense
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.2.label = Has automatic license
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.2.order = 10
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.2.userQueryType = grouper
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.2.variableToAssign = cu_inGroupForAutomaticLicense
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.2.variableType = boolean
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.3.fieldNames = members
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.3.groupName = penn\u003Acommunity\u003AactiveNonAlumniWithPennname
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.3.label = Active Penn affiliate
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.3.order = 20
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.3.userQueryType = grouper
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.3.variableToAssign = cu_activePennAffiliate
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.3.variableType = boolean
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.4.fieldNames = members
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.4.groupName = penn\u003Aisc\u003Aait\u003Aapps\u003Aatlassian\u003AhelperGroups\u003AconfluenceHaveSelfClaimedLicense
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.4.label = Claimed license
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.4.order = 30
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.4.userQueryType = grouper
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.4.variableToAssign = cu_inGroupForClaimedLicense
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.4.variableType = boolean
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.5.fieldNames = members
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.5.groupName = penn\u003Aisc\u003Aait\u003Aapps\u003Aatlassian\u003AhelperGroups\u003AjiraAllowedToClaimLicense
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.5.label = Can claim license
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.5.order = 40
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.5.userQueryType = grouper
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.5.variableToAssign = cu_inGroupForCanClaimLicense
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.5.variableType = boolean
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.6.bindVar0 = \u0024{subject.id}
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.6.bindVar0Type = string
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.6.configId = grouper
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.6.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.6.label = Jira groups
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.6.query = select string_agg(gg.extension, ', ' order by gg.extension) as group_names from grouper_memberships_lw_v gmlv2, grouper_groups gg where gmlv2.group_id = gg.id and gmlv2.list_name = 'members' and gmlv2.subject_source = 'pennperson' and gmlv2.group_name like 'penn\u003Aisc\u003Aait\u003Aapps\u003Aatlassian\u003AgroupsJira\u003A%' and gmlv2.subject_id = ?
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.6.userQueryType = sql
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.6.variableToAssign = cu_jiraGroups
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.6.variableType = string
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.7.bindVar0 = \u0024{subject.id}
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.7.bindVar0Type = string
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.7.configId = grouper
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.7.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.7.label = Has at least one Jira group
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.7.query = select case when exists (select 1 from grouper_memberships_lw_v gmlv2, grouper_groups gg where gmlv2.group_id = gg.id and gmlv2.list_name = 'members' and gmlv2.subject_source = 'pennperson' and gmlv2.group_name like 'penn\u003Aisc\u003Aait\u003Aapps\u003Aatlassian\u003AgroupsJira\u003A%' and gmlv2.subject_id = ? and gmlv2.group_name != 'penn\u003Aisc\u003Aait\u003Aapps\u003Aatlassian\u003AgroupsJira\u003Ajira_has_license') then 1 else 0 end as has_group
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.7.userQueryType = sql
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.7.variableToAssign = cu_jiraHasGroup
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.7.variableType = boolean
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.8.fieldNames = members
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.8.groupName = penn\u003Aisc\u003Aait\u003Aapps\u003Aatlassian\u003AhelperGroups\u003ArecentAtlassianCloudUsers
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.8.label = Recent Atlassian user
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.8.order = 40
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.8.userQueryType = grouper
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.8.variableToAssign = cu_recentAtlassianUser
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.8.variableType = boolean
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.9.fieldNames = members
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.9.groupName = penn\u003Aisc\u003Aait\u003Aapps\u003Aatlassian\u003Aadmin\u003Aadmins
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.9.label = Atlassian admin
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.9.userQueryType = grouper
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.9.variableToAssign = cu_atlassianAdmin
grouperCustomUI.atlassianJiraClaimLicense.cuQuery.9.variableType = boolean
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.0.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.0.endIfMatches = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.0.index = 0
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.0.textBoolean = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.0.textIsScript = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.0.textType = canSeeScreenState
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.1.defaultText = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.1.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.1.endIfMatches = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.1.index = 10
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.1.text = <h1>ISC Jira account analysis</h1>
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.1.textType = header
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.10.defaultText = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.10.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.10.endIfMatches = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.10.index = 0
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.10.textBoolean = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.10.textIsScript = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.10.textType = manageMembership
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.11.defaultText = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.11.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.11.endIfMatches = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.11.index = -20
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.11.script = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.11.text = This page displays your account status for ISC cloud Jira. If you do not have a license and are eligible to claim one, you can do that here.<br /><br /><ul>
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.11.textType = instructions1
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.12.defaultText = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.12.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.12.endIfMatches = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.12.index = 10
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.12.script = \u0024{ cu_jiraHasLicenseProvisioned }
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.12.text = <li><b>Jira license provisioned\u003A</b> yes. Your Jira license was provisioned more than 5 minutes ago and is ready to use</li>
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.12.textType = instructions1
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.13.defaultText = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.13.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.13.endIfMatches = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.13.index = 11
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.13.script = \u0024{ !cu_jiraHasLicenseProvisioned && cu_jiraHasLicense }
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.13.text = <li><b>Jira license provisioned\u003A</b> <b style="color\u003A brown">no. Your Jira license was not provisioned more than 5 minutes ago and is not ready to use</b></li>
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.13.textType = instructions1
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.14.defaultText = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.14.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.14.endIfMatches = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.14.index = 32
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.14.script = \u0024{!cu_inGroupForAutomaticLicense && !cu_inGroupForClaimedLicense && !cu_inGroupForCanClaimLicense}
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.14.text = <font style="color\u003Abrown"><b>Error\u003A</b></font> You do not have a license and you are not allowed to self-claim a license, open a ticket with help@isc.upenn.edu with your needs for Jira
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.14.textType = enrollmentLabel
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.15.defaultText = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.15.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.15.endIfMatches = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.15.index = 21
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.15.script = \u0024{ !cu_jiraHasLicense }
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.15.text = <li><b>Has provisioned Jira license\u003A</b> <b style="color\u003A brown">no. You do not have a provisioned license</b></li>
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.15.textType = instructions1
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.16.defaultText = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.16.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.16.endIfMatches = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.16.index = 2000
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.16.text = </ul>
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.16.textType = instructions1
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.17.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.17.endIfMatches = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.17.index = 30
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.17.script = \u0024{!cu_activePennAffiliate}
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.17.text = <font style="color\u003Abrown"><b>Error\u003A</b></font> You are not an active Penn affiliate and need to ask your BA to check employment records
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.17.textType = enrollmentLabel
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.18.defaultText = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.18.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.18.endIfMatches = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.18.index = 30
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.18.script = \u0024{ cu_activePennAffiliate }
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.18.text = <li><b>Active Penn affiliate\u003A</b> yes. You have a valid active Penn affiliation</li>
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.18.textType = instructions1
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.19.defaultText = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.19.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.19.endIfMatches = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.19.index = 31
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.19.script = \u0024{ !cu_activePennAffiliate }
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.19.text = <li><b>Active Penn affiliate\u003A</b> <b style="color\u003A brown">no. You do not have an active Penn affiliation</b></li>
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.19.textType = instructions1
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.2.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.2.endIfMatches = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.2.index = 0
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.2.textBoolean = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.2.textIsScript = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.2.textType = canSeeUserEnvironment
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.20.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.20.endIfMatches = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.20.index = 40
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.20.script = \u0024{(cu_inGroupForAutomaticLicense || cu_inGroupForClaimedLicense) && !cu_jiraHasLicense}
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.20.text = <font style="color\u003Abrown"><b>Error\u003A</b></font> You are in the PennGroup indicating you have a license, but it has not been provisioned. If it is been a few minutes and still not provisioned, open a ticket with help@isc.upenn.edu and let them know provisioning is not working for Atlassian.
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.20.textType = enrollmentLabel
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.21.defaultText = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.21.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.21.endIfMatches = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.21.index = 40
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.21.script = \u0024{ cu_inGroupForAutomaticLicense }
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.21.text = <li><b>Has automatic license\u003A</b> yes. You have an automatic license so you do not need to claim one</li>
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.21.textType = instructions1
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.22.defaultText = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.22.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.22.endIfMatches = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.22.index = 41
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.22.script = \u0024{ !cu_inGroupForAutomaticLicense && cu_inGroupForClaimedLicense }
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.22.text = <li><b>Claimed license\u003A</b> yes. You have claimed a license for Jira. If you stop using Jira for two months, you will need to claim your license again</b></li>
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.22.textType = instructions1
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.23.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.23.endIfMatches = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.23.index = 50
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.23.script = \u0024{!cu_inGroupForAutomaticLicense && !cu_inGroupForClaimedLicense && cu_inGroupForCanClaimLicense}
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.23.text = <font style="color\u003Abrown"><b>Error\u003A</b></font> You do not have a Jira license but you can claim one. Click the 'Claim Jira license' button below, wait 5 minutes, and try Jira again.
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.23.textType = enrollmentLabel
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.24.defaultText = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.24.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.24.endIfMatches = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.24.index = 50
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.24.script = \u0024{ !cu_inGroupForAutomaticLicense && cu_inGroupForCanClaimLicense }
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.24.text = <li><b>Can claim license\u003A</b> yes. You are allowed to claim a Jira license</li>
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.24.textType = instructions1
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.25.defaultText = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.25.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.25.endIfMatches = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.25.index = 51
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.25.script = \u0024{ !cu_inGroupForAutomaticLicense && !cu_inGroupForCanClaimLicense }
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.25.text = <li><b>Can claim license\u003A</b> <b style="color\u003A brown">no. You are not allowed to claim a Jira license</b></li>
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.25.textType = instructions1
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.26.defaultText = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.26.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.26.endIfMatches = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.26.index = 60
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.26.script = \u0024{ cu_jiraHasGroup }
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.26.text = <li><b>Groups\u003A</b> \u0024{cu_jiraGroups}</li>
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.26.textType = instructions1
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.27.defaultText = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.27.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.27.endIfMatches = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.27.index = 59
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.27.script = \u0024{ !cu_jiraHasGroup }
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.27.text = <li><b>Has at least one group\u003A</b> <b style="color\u003A brown">no. You are not in any Jira groups, so do you not have any access. Open a ticket with help@isc.upenn.edu</b></li>
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.27.textType = instructions1
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.28.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.28.endIfMatches = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.28.index = 5
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.28.script = \u0024{ !cu_jiraHasGroup }
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.28.text = <font style="color\u003Abrown"><b>Error\u003A</b></font> You are not in any Jira policy groups and have no access to any projects. Open a ticket with help@isc.upenn.edu if this should not be the case</b>
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.28.textType = enrollmentLabel
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.29.defaultText = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.29.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.29.endIfMatches = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.29.index = 70
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.29.script = \u0024{ cu_recentAtlassianUser }
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.29.text = <li><b>Recent Atlassian user\u003A</b> yes. You have used Atlassian in the cloud in the last 60 days</li>
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.29.textType = instructions1
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.3.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.3.endIfMatches = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.3.index = 0
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.3.textBooleanScript = \u0024{cu_atlassianAdminCanAssignVariables}
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.3.textIsScript = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.3.textType = canAssignVariables
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.30.defaultText = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.30.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.30.endIfMatches = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.30.index = 71
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.30.script = \u0024{ !cu_recentAtlassianUser }
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.30.text = <li><b>Recent Atlassian user\u003A</b> no. You have not used Atlassian in the cloud in the last 60 days</li>
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.30.textType = instructions1
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.31.defaultText = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.31.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.31.endIfMatches = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.31.index = 10
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.31.text = Claim Jira license
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.31.textType = enrollButtonText
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.32.defaultText = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.32.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.32.endIfMatches = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.32.index = 80
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.32.script = \u0024{ cu_inTwoStep }
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.32.text = <li><b>In two-step\u003A</b> yes. You are enrolled in Two-step</li>
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.32.textType = instructions1
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.33.defaultText = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.33.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.33.endIfMatches = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.33.index = 81
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.33.script = \u0024{ !cu_inTwoStep }
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.33.text = <li><b>In two-step\u003A</b> <b style="color\u003A brown">no. You are not enrolled in Two-step</b></li>
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.33.textType = instructions1
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.34.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.34.endIfMatches = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.34.index = 31
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.34.script = \u0024{!cu_inTwoStep}
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.34.text = <font style="color\u003Abrown"><b>Error\u003A</b></font> You are not enrolled in <a href="https\u003A//twostep.apps.upenn.edu">Two-step</a>. You need to enroll to use ISC Jira.
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.34.textType = enrollmentLabel
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.4.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.4.endIfMatches = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.4.index = 0
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.4.text =
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.4.textType = helpLink
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.5.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.5.endIfMatches = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.5.index = 10
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.5.script = \u0024{(cu_jiraHasLicense && !cu_jiraHasLicenseProvisioned)}
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.5.text = <font style="color\u003Abrown"><b>Warning\u003A</b></font> You need to wait a few minutes for data to propagate inside Atlassian. You have a recently successfully provisioned license though. Try again in a few minutes.
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.5.textType = enrollmentLabel
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.6.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.6.endIfMatches = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.6.index = 11
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.6.script = \u0024{cu_jiraHasLicenseProvisioned}
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.6.text = <font style="color\u003Agreen"><b>Success\u003A</b></font> License provisioned more than 5 minutes ago. <a href="https\u003A//isc-penn-jira.atlassian.net/jira">Jira</a> is ready for you to use.
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.6.textType = enrollmentLabel
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.7.defaultText = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.7.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.7.endIfMatches = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.7.index = 0
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.7.textBoolean = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.7.textIsScript = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.7.textType = unenrollButtonShow
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.8.defaultText = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.8.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.8.endIfMatches = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.8.index = 0
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.8.text =
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.8.textType = enrollmentLabel
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.9.defaultText = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.9.enabled = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.9.endIfMatches = true
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.9.index = 0
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.9.textBoolean = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.9.textBooleanScript = \u0024{(!cu_inGroupForAutomaticLicense && cu_activePennAffiliate && !cu_inGroupForClaimedLicense && cu_inGroupForCanClaimLicense && cu_jiraHasGroup)}
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.9.textIsScript = false
grouperCustomUI.atlassianJiraClaimLicense.cuTextConfig.9.textType = enrollButtonShow
grouperCustomUI.atlassianJiraClaimLicense.groupUUIDOrName = penn\u003Aisc\u003Aait\u003Aapps\u003Aatlassian\u003AhelperGroups\u003AjiraHaveSelfClaimedLicense
grouperCustomUI.atlassianJiraClaimLicense.numberOfQueries = 12
grouperCustomUI.atlassianJiraClaimLicense.numberOfTextConfigs = 35
States of screen
Note: to test the screen states, the user must be in the Atlassian admin can assign custom ui variables group