﻿<?xml version="1.0" encoding="UTF-8"?>
<kit:DataSet xmlns:ctd="http://www.memority.com/citadel/1_0" xmlns:ctdcore="http://www.memority.com/citadel/core/1_0" xmlns:ctdidm="http://www.memority.com/citadel/idm/1_0" xmlns:ctdrule="http://www.memority.com/citadel/rule/1_0" xmlns:ctdtnt="http://www.memority.com/citadel/tnt/1_0" xmlns:kit="http://www.memority.com/toolkit/1_0" xmlns:rule="http://www.memority.com/toolkit/rule/1_0" xmlns:ruleaddon="http://www.memority.com/toolkit/addons/rule/1_0" xmlns:search="http://www.memority.com/toolkit/search-expression/1_0" xmlns:settings="http://www.memority.com/toolkit/addons/settings/1_0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <ctdidm:ObjectLifecyclePolicy id="frozenRoles">
      <createdAt>2021-09-17T07:54:26.315Z</createdAt>
      <name>frozenRoles</name>
      <description></description>
      <stage>ASSIGNMENTS_PRE</stage>
      <objectKind>IDENTITY</objectKind>
      <active>true</active>
      <objectTypes>
         <objectType>Employee</objectType>
      </objectTypes>
      <actions>
         <action>
            <script><![CDATA[import java.time.Instant
import java.time.temporal.ChronoUnit 

if (OPERATION.operation == ObjectOperation.PATCH && OBJECT.getKind() == ObjectKind.IDENTITY \
    && OPERATION.originalAttributes?.securityOrganization != OBJECT.securityOrganization ) {
	LOG.debug("mutation: from securityOrganization = " + OPERATION.originalAttributes?.securityOrganization + " to securityOrganization = " + OBJECT.securityOrganization)
	Instant  frozenUntil = Instant.now().plus(5, ChronoUnit.MINUTES)
	LOG.debug("frozenUntil = " + frozenUntil)
	def frozenRoles = OBJECT.roles.collect {
			RoleAssignment.copying(it)
					.frozenUntil(frozenUntil)
					.build()
	}
	OBJECT.roles = frozenRoles 
}  ]]></script>
         </action>
      </actions>
   </ctdidm:ObjectLifecyclePolicy>
</kit:DataSet>
