<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Hi Vincent,<br>
<br>
I tried to write unit test for this issue and I can't reproduce it
with shadow you posted in previous mail.<br>
Did you try to delete it through Configuration/Repository objects?<br>
<br>
Is your setup using embedded H2 or nonembedded?<br>
<br>
Best regards,<br>
<br>
Vilo<br>
<br>
<div class="moz-cite-prefix">On 10/01/2013 01:47 PM, Viliam Repan
wrote:<br>
</div>
<blockquote cite="mid:524AB639.1080201@evolveum.com" type="cite">
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
Hi Vincent,<br>
<br>
I've just created Jira issue for this problem, <a
moz-do-not-send="true" class="moz-txt-link-freetext"
href="https://jira.evolveum.com/browse/MID-1624">https://jira.evolveum.com/browse/MID-1624</a>
, will be fixed in next release (2.3) also in 2.2.1 if necessary.<br>
<br>
Best regards,<br>
<br>
vilo<br>
<br>
<div class="moz-cite-prefix">On 09/30/2013 08:36 PM,
Belleville-Rioux, Vincent wrote:<br>
</div>
<blockquote
cite="mid:0AD36E0192997748BD28BC68B14C75D003690D@Lettre.gst.uqam.ca"
type="cite">
<meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1">
<style type="text/css"></style>
<div style="direction: ltr;font-family: Tahoma;color:
#000000;font-size: 10pt;">
<div>Ok, I understand.</div>
<div><br>
</div>
<div>I've been trying to set it up the way your suggest with
limited success...</div>
<div><br>
<div>For some reason, in one of my tests, I ended up with an
undeletable object in the shadow object types... I
think the only way to fix that for me would be to go into
the h2db and do manual queries. Just wanted to share the
problem :</div>
<div><br>
</div>
<div><br>
</div>
<div>Object :</div>
<div><br>
</div>
<div><br>
</div>
<div>
<div><object xmlns=<a moz-do-not-send="true"
class="moz-txt-link-rfc2396E"
href="http://midpoint.evolveum.com/xml/ns/public/common/common-2a">"http://midpoint.evolveum.com/xml/ns/public/common/common-2a"</a></div>
<div> xmlns:xsi=<a moz-do-not-send="true"
class="moz-txt-link-rfc2396E"
href="http://www.w3.org/2001/XMLSchema-instance">"http://www.w3.org/2001/XMLSchema-instance"</a></div>
<div> oid="f17ab2a1-a6ce-4ad1-b057-6537bfc49cc8"</div>
<div> version="6"</div>
<div> xsi:type="ShadowType"></div>
<div> <name></div>
<div> <orig
xmlns=<a moz-do-not-send="true"
class="moz-txt-link-rfc2396E"
href="http://prism.evolveum.com/xml/ns/public/types-2">"http://prism.evolveum.com/xml/ns/public/types-2"</a>>undeletableobject</orig></div>
<div> <norm
xmlns=<a moz-do-not-send="true"
class="moz-txt-link-rfc2396E"
href="http://prism.evolveum.com/xml/ns/public/types-2">"http://prism.evolveum.com/xml/ns/public/types-2"</a>>undeletableobject</norm></div>
<div> </name></div>
<div> <trigger id="1"></div>
<div>
<timestamp>2018-01-01T00:00:00.000-05:00</timestamp></div>
<div>
<handlerUri><a moz-do-not-send="true"
class="moz-txt-link-freetext"
href="http://midpoint.evolveum.com/xml/ns/public/model/trigger/recompute/handler-2">http://midpoint.evolveum.com/xml/ns/public/model/trigger/recompute/handler-2</a></handlerUri></div>
<div> </trigger></div>
<div> <metadata></div>
<div>
<createTimestamp>2013-09-30T14:23:23.817-04:00</createTimestamp></div>
<div> <creatorRef xmlns:c=<a
moz-do-not-send="true" class="moz-txt-link-rfc2396E"
href="http://midpoint.evolveum.com/xml/ns/public/common/common-2a">"http://midpoint.evolveum.com/xml/ns/public/common/common-2a"</a></div>
<div>
oid="00000000-0000-0000-0000-000000000002"</div>
<div> type="c:UserType"/></div>
<div>
<createChannel><a moz-do-not-send="true"
class="moz-txt-link-freetext"
href="http://midpoint.evolveum.com/xml/ns/public/provisioning/channels-2#discovery">http://midpoint.evolveum.com/xml/ns/public/provisioning/channels-2#discovery</a></createChannel></div>
<div>
<modifyTimestamp>2013-09-30T14:26:27.965-04:00</modifyTimestamp></div>
<div> <modifierRef
oid="00000000-0000-0000-0000-000000000002"/></div>
<div>
<modifyChannel><a moz-do-not-send="true"
class="moz-txt-link-freetext"
href="http://midpoint.evolveum.com/xml/ns/public/gui/channels-2#user">http://midpoint.evolveum.com/xml/ns/public/gui/channels-2#user</a></modifyChannel></div>
<div> </metadata></div>
<div> <resourceRef xmlns:c=<a moz-do-not-send="true"
class="moz-txt-link-rfc2396E"
href="http://midpoint.evolveum.com/xml/ns/public/common/common-2a">"http://midpoint.evolveum.com/xml/ns/public/common/common-2a"</a></div>
<div>
oid="af2bc95b-76e0-48e2-86d6-3d4f02d3fafe"</div>
<div> type="c:ResourceType"/></div>
<div> <objectClass
xmlns:qn363=<a moz-do-not-send="true"
class="moz-txt-link-rfc2396E"
href="http://midpoint.evolveum.com/xml/ns/public/resource/instance-2">"http://midpoint.evolveum.com/xml/ns/public/resource/instance-2"</a>>qn363:AccountObjectClass</objectClass></div>
<div> <c:kind xmlns:c=<a moz-do-not-send="true"
class="moz-txt-link-rfc2396E"
href="http://midpoint.evolveum.com/xml/ns/public/common/common-2a">"http://midpoint.evolveum.com/xml/ns/public/common/common-2a"</a></div>
<div>
xmlns:icfs=<a moz-do-not-send="true"
class="moz-txt-link-rfc2396E"
href="http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/resource-schema-2">"http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/resource-schema-2"</a></div>
<div> xmlns:t=<a moz-do-not-send="true"
class="moz-txt-link-rfc2396E"
href="http://prism.evolveum.com/xml/ns/public/types-2">"http://prism.evolveum.com/xml/ns/public/types-2"</a></div>
<div>
xmlns:icfc=<a moz-do-not-send="true"
class="moz-txt-link-rfc2396E"
href="http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/connector-schema-2">"http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/connector-schema-2"</a></div>
<div> xmlns:q=<a moz-do-not-send="true"
class="moz-txt-link-rfc2396E"
href="http://prism.evolveum.com/xml/ns/public/query-2">"http://prism.evolveum.com/xml/ns/public/query-2"</a></div>
<div>
xmlns:cap=<a moz-do-not-send="true"
class="moz-txt-link-rfc2396E"
href="http://midpoint.evolveum.com/xml/ns/public/resource/capabilities-2">"http://midpoint.evolveum.com/xml/ns/public/resource/capabilities-2"</a></div>
<div>
xmlns:apti=<a moz-do-not-send="true"
class="moz-txt-link-rfc2396E"
href="http://midpoint.evolveum.com/xml/ns/public/common/api-types-2">"http://midpoint.evolveum.com/xml/ns/public/common/api-types-2"</a></div>
<div>
xmlns:wfcf=<a moz-do-not-send="true"
class="moz-txt-link-rfc2396E"
href="http://midpoint.evolveum.com/xml/ns/model/workflow/common-forms-2">"http://midpoint.evolveum.com/xml/ns/model/workflow/common-forms-2"</a></div>
<div>
xmlns:m=<a moz-do-not-send="true"
class="moz-txt-link-rfc2396E"
href="http://midpoint.evolveum.com/xml/ns/public/model/model-context-2">"http://midpoint.evolveum.com/xml/ns/public/model/model-context-2"</a></div>
<div> xmlns:ds=<a moz-do-not-send="true"
class="moz-txt-link-rfc2396E"
href="http://www.w3.org/2000/09/xmldsig#">"http://www.w3.org/2000/09/xmldsig#"</a></div>
<div> xmlns:enc=<a moz-do-not-send="true"
class="moz-txt-link-rfc2396E"
href="http://www.w3.org/2001/04/xmlenc#">"http://www.w3.org/2001/04/xmlenc#"</a>>account</c:kind></div>
<div> <intent>default</intent></div>
<div> <iteration>0</iteration></div>
<div> <iterationToken/></div>
<div></object></div>
</div>
<div><br>
</div>
<div><br>
</div>
<div>-----------------------------</div>
<div><br>
</div>
<div>Error when trying to delete it :</div>
<div><br>
</div>
<div><br>
</div>
<div>
<div style="font-family:Tahoma; font-size:13px">
<div style="">
<ul class="messagesTop" style="margin: 0px 0px 20px;
padding: 0px; font-family: Arial, Helvetica,
sans-serif; font-size: 14px;">
<li style="padding-bottom: 5px; list-style: none
outside none; margin: 0px;">
<div class="messages-error" style="color: rgb(204,
10, 12); border: 1px solid rgb(210, 31, 30);
padding: 0px; border-top-left-radius: 4px;
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
border-bottom-left-radius: 4px;
background-color: rgb(255, 215, 202);">
<div class="messages-topPanel messages-topError
selected" id="id3ea1" title="Partial error"
style="padding: 10px 5px 10px 40px;
font-weight: bold; background-image:
url(http://usager-gia/midpoint/wicket/resource/com.evolveum.midpoint.web.component.message.MainFeedback/messages-error-icon.png);
border-top-left-radius: 4px;
border-top-right-radius: 4px;
border-bottom-right-radius: 0px;
border-bottom-left-radius: 0px;
background-color: rgb(255, 194, 174); cursor:
pointer; background-position: 12px 50%;
background-repeat: no-repeat no-repeat;">
<div class="messages-topMessage"
style="display: inline-block; padding-right:
15px;"> Couldn't delete object
'undeletableobject'.</div>
<br>
<div class="messages-topException"
style="font-size: 12px; display:
inline-block; padding-right: 15px;
padding-top: 5px; clear: both; font-weight:
normal; width: 1224.546875px;">
<ul style="list-style: none outside none;
margin: 0px; padding: 0px;">
<li style="padding: 1px 0px; list-style:
none outside none; margin: 0px;
text-overflow: ellipsis; overflow:
auto;">
<div class="message-info">Delete object
(Gui)</div>
</li>
<li style="padding: 1px 0px; list-style:
none outside none; margin: 0px;
text-overflow: ellipsis; overflow:
auto;"> <span class="message-info"><u>Cause:</u>
<p style="margin: 0px; display:
inline;">Subresult
com.evolveum.midpoint.provisioning.api.ProvisioningService.deleteObject
of operation
com.evolveum.midpoint.model.api.ModelService.executeChanges
is still UNKNOWN during cleanup;
during handling of exception
com.evolveum.midpoint.util.exception.SystemException:
Referential integrity constraint
violation: "FK_TRIGGER_OWNER:
PUBLIC.M_TRIGGER FOREIGN
KEY(OWNER_ID, OWNER_OID) REFERENCES
PUBLIC.M_OBJECT(ID, OID) (0,
'f17ab2a1-a6ce-4ad1-b057-6537bfc49cc8')";
SQL statement:<br>
delete from m_object where id=? and
oid=? [23503-171]</p>
</span></li>
</ul>
</div>
<span class="messages-topError-arrow
arrow-down arrow-up"
style="background-image:
url(http://usager-gia/midpoint/wicket/resource/com.evolveum.midpoint.web.component.message.MainFeedback/messages-error-arrow.png);
display: inline-block; height: 16px; width:
16px; position: absolute; right: 60px;
margin-top: 26px; background-position: 0px
0px; background-repeat: no-repeat
no-repeat;"></span></div>
<div class="messages-content
messages-error-content" id="id3ea1_content"
style="padding-left: 20px; padding-bottom:
5px; padding-right: 10px;">
<ul style="list-style: none outside none;
margin: 5px 0px 0px; padding: 0px;
min-height: 20px;">
<li style="padding: 1px 0px; list-style:
none outside none; margin: 0px;
text-overflow: ellipsis; overflow: auto;">
<div style="display: inline-block;"><span
class="message-info"><span
class="errorStack" id="id3ea2"
style="color: rgb(85, 85, 85);
font-weight: bold; font-size: 12px;
margin-left: 5px;"><span
class="showStackText">[ SHOW ERROR
STACK ]</span></span></span></div>
<div class="collapseExpand"
style="display: inline-block; position:
absolute; right: 65px; font-size: 12px;">
<span class="collapseAll"
style="padding: 0px 5px;">Collapse all</span> <span
class="expandAll" style="padding: 0px
5px;">Expand all</span> <span
id="exportToXml" style="padding: 0px
5px;">Export to XML</span></div>
</li>
</ul>
<ul class="messages-details"
style="list-style: none outside none;
margin: 0px; padding: 0px;">
<li class="messages-error-details-section"
title="Fatal error" style="padding: 2px
0px 1px 25px; list-style: none outside
none; margin: 5px 0px 0px; text-overflow:
ellipsis; overflow: auto; font-size: 12px;
background-image:
url(http://usager-gia/midpoint/wicket/resource/com.evolveum.midpoint.web.component.message.MainFeedback/messages-error-icon.png);
background-position: 9px 2px;
background-repeat: no-repeat no-repeat;">
<span class="arrow-right
messages-error-details-bold-arrow"
id="id3ea3_arrow"
style="background-image:
url(http://usager-gia/midpoint/wicket/resource/com.evolveum.midpoint.web.component.message.MainFeedback/messages-error-arrow.png);
display: inline-block; height: 16px;
width: 16px; float: left; margin: 0px
5px; background-position: 0px -16px;
background-repeat: no-repeat no-repeat;"></span><span
class="messages-details-bold"
id="id3ea3" style="padding: 0px;
font-weight: bold;">Execute changes
(Model)</span>
<div class="messages-details-content"
id="id3ea3_content" style="padding-left:
30px; background-position: 0px -32px;">
<ul style="list-style: none outside
none; margin: 0px; padding: 0px;">
<li style="padding: 1px 0px;
list-style: none outside none;
margin: 0px; text-overflow:
ellipsis; overflow: auto;"> <span
class="message-info">Referential
integrity constraint violation:
"FK_TRIGGER_OWNER:
PUBLIC.M_TRIGGER FOREIGN
KEY(OWNER_ID, OWNER_OID)
REFERENCES PUBLIC.M_OBJECT(ID,
OID) (0,
'f17ab2a1-a6ce-4ad1-b057-6537bfc49cc8')";
SQL statement: delete from
m_object where id=? and oid=?
[23503-171]</span></li>
<li style="padding: 1px 0px;
list-style: none outside none;
margin: 0px; text-overflow:
ellipsis; overflow: auto;"> <span
class="message-info"><u>Param:</u> options: com.evolveum.midpoint.model.api.ModelExecuteOptions@4653a06c</span></li>
<li style="padding: 1px 0px;
list-style: none outside none;
margin: 0px; text-overflow:
ellipsis; overflow: auto;"> <span
class="message-info"><u>Cause:</u>
<p style="margin: 0px; display:
inline;">Referential integrity
constraint violation:
"FK_TRIGGER_OWNER:
PUBLIC.M_TRIGGER FOREIGN
KEY(OWNER_ID, OWNER_OID)
REFERENCES PUBLIC.M_OBJECT(ID,
OID) (0,
'f17ab2a1-a6ce-4ad1-b057-6537bfc49cc8')";
SQL statement:<br>
delete from m_object where id=?
and oid=? [23503-171]</p>
<span class="errorStack"
id="id3ea4" style="color:
rgb(85, 85, 85); font-weight:
bold; margin-left: 5px;"><span
class="showStackText">[ SHOW
ERROR STACK ]</span></span></span></li>
<li
class="messages-warn-details-section"
title="Unknown" style="padding: 2px
0px 1px 25px; list-style: none
outside none; margin: 5px 0px 0px;
text-overflow: ellipsis; overflow:
auto; background-image:
url(http://usager-gia/midpoint/wicket/resource/com.evolveum.midpoint.web.component.message.MainFeedback/messages-warn-icon.png);
color: rgb(210, 139, 30);
background-position: 9px 2px;
background-repeat: no-repeat
no-repeat;"> <span
class="messages-details
selected-section"
style="margin-top: 0px;
background-color: rgb(255, 232,
224);"><span class="arrow-right
messages-warn-details-bold-arrow
arrow-down" id="id3ea5_arrow"
style="background-image:
url(http://usager-gia/midpoint/wicket/resource/com.evolveum.midpoint.web.component.message.MainFeedback/messages-warn-arrow.png);
display: inline-block; height:
16px; width: 16px; float: left;
margin: 0px 5px;
background-position: 0px -32px;
background-repeat: no-repeat
no-repeat;"></span><span
class="messages-details-bold"
id="id3ea5" style="padding: 0px;
font-weight: bold;">Delete
object (Provisioning)</span>
<div
class="messages-details-content"
id="id3ea5_content"
style="padding-left: 30px;
background-position: 0px -32px;">
<ul style="list-style: none
outside none; margin: 0px;
padding: 0px;">
<li style="padding: 1px 0px;
list-style: none outside
none; margin: 0px;
text-overflow: ellipsis;
overflow: auto;"> <span
class="message-info"></span><br>
</li>
<li style="padding: 1px 0px;
list-style: none outside
none; margin: 0px;
text-overflow: ellipsis;
overflow: auto;"> <span
class="message-info"><u>Param:</u> scripts: </span></li>
<li style="padding: 1px 0px;
list-style: none outside
none; margin: 0px;
text-overflow: ellipsis;
overflow: auto;"> <span
class="message-info"><u>Param:</u> oid: f17ab2a1-a6ce-4ad1-b057-6537bfc49cc8</span></li>
<li style="padding: 1px 0px;
list-style: none outside
none; margin: 0px;
text-overflow: ellipsis;
overflow: auto;"> <span
class="message-info"><u>Context:</u> implementationClass: class
com.evolveum.midpoint.provisioning.impl.ProvisioningServiceImpl</span></li>
<li
class="messages-succ-details-section"
title="Success"
style="padding: 2px 0px 1px
25px; list-style: none
outside none; margin: 5px
0px 0px; text-overflow:
ellipsis; overflow: auto;
background-image:
url(http://usager-gia/midpoint/wicket/resource/com.evolveum.midpoint.web.component.message.MainFeedback/messages-succ-icon.png);
color: rgb(79, 138, 16);
background-position: 9px
1px; background-repeat:
no-repeat no-repeat;"> <span
class="messages-details"
style="margin-top: 0px;"><span
class="arrow-right
messages-succ-details-bold-arrow"
id="id3ea7_arrow"
style="background-image:
url(http://usager-gia/midpoint/wicket/resource/com.evolveum.midpoint.web.component.message.MainFeedback/messages-succ-arrow.png);
display: inline-block;
height: 16px; width:
16px; float: left;
margin: 0px 5px;
background-position: 0px
-16px;
background-repeat:
no-repeat no-repeat;"></span><span
class="messages-details-bold" id="id3ea7" style="padding: 0px;
font-weight: bold;">Get
object (Repository)</span></span></li>
<li
class="messages-error-details-section"
title="Fatal error"
style="padding: 2px 0px 1px
25px; list-style: none
outside none; margin: 5px
0px 0px; text-overflow:
ellipsis; overflow: auto;
background-image:
url(http://usager-gia/midpoint/wicket/resource/com.evolveum.midpoint.web.component.message.MainFeedback/messages-error-icon.png);
color: rgb(204, 10, 12);
background-position: 9px
2px; background-repeat:
no-repeat no-repeat;"> <span
class="messages-details
selected-section"
style="margin-top: 0px;"><span
class="arrow-right
messages-error-details-bold-arrow
arrow-down"
id="id3ea9_arrow"
style="background-image:
url(http://usager-gia/midpoint/wicket/resource/com.evolveum.midpoint.web.component.message.MainFeedback/messages-error-arrow.png);
display: inline-block;
height: 16px; width:
16px; float: left;
margin: 0px 5px;
background-position: 0px
-32px;
background-repeat:
no-repeat no-repeat;"></span><span
class="messages-details-bold" id="id3ea9" style="padding: 0px;
font-weight: bold;">Delete
object (Repository)</span>
<div
class="messages-details-content"
id="id3ea9_content"
style="padding-left:
30px;
background-position: 0px
-32px;">
<ul style="list-style:
none outside none;
margin: 0px; padding:
0px;">
<li style="padding:
1px 0px; list-style:
none outside none;
margin: 0px;
text-overflow:
ellipsis; overflow:
auto;"> <span
class="message-info">Referential
integrity
constraint
violation:
"FK_TRIGGER_OWNER:
PUBLIC.M_TRIGGER
FOREIGN
KEY(OWNER_ID,
OWNER_OID)
REFERENCES
PUBLIC.M_OBJECT(ID,
OID) (0,
'f17ab2a1-a6ce-4ad1-b057-6537bfc49cc8')";
SQL statement:
delete from
m_object where
id=? and oid=?
[23503-171]</span></li>
<li style="padding:
1px 0px; list-style:
none outside none;
margin: 0px;
text-overflow:
ellipsis; overflow:
auto;"> <span
class="message-info"><u>Param:</u> oid: f17ab2a1-a6ce-4ad1-b057-6537bfc49cc8</span></li>
<li style="padding:
1px 0px; list-style:
none outside none;
margin: 0px;
text-overflow:
ellipsis; overflow:
auto;"> <span
class="message-info"><u>Param:</u> type: com.evolveum.midpoint.xml.ns._public.common.common_2a.ShadowType</span></li>
<li style="padding:
1px 0px; list-style:
none outside none;
margin: 0px;
text-overflow:
ellipsis; overflow:
auto;"> <span
class="message-info"><u>Cause:</u>
<p style="margin:
0px; display:
inline;">Referential
integrity
constraint
violation:
"FK_TRIGGER_OWNER:
PUBLIC.M_TRIGGER
FOREIGN
KEY(OWNER_ID,
OWNER_OID)
REFERENCES
PUBLIC.M_OBJECT(ID,
OID) (0,
'f17ab2a1-a6ce-4ad1-b057-6537bfc49cc8')";
SQL statement:<br>
delete from
m_object where
id=? and oid=?
[23503-171]</p>
<span
class="errorStack"
id="id3eaa"
style="color:
rgb(85, 85, 85);
font-weight:
bold;
margin-left:
5px;"><span
class="hideStackText"
style="display:
inline;">[
HIDE ERROR
STACK ]</span></span></span>
<div
class="errorStack-content"
id="id3eaa_content" style="margin: 5px 0px 5px 15px; overflow: auto;"> <code>
<p
style="margin:
0px; display:
inline;">org.hibernate.exception.ConstraintViolationException:
Referential
integrity
constraint
violation:
"FK_TRIGGER_OWNER:
PUBLIC.M_TRIGGER
FOREIGN
KEY(OWNER_ID,
OWNER_OID)
REFERENCES
PUBLIC.M_OBJECT(ID,
OID) (0,
'f17ab2a1-a6ce-4ad1-b057-6537bfc49cc8')";
SQL statement:<br>
delete from
m_object where
id=? and oid=?
[23503-171]<br>
at
org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:128)<br>
at
org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)<br>
at
org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)<br>
at
org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)<br>
at
org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:129)<br>
at
org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)<br>
at
com.sun.proxy.$Proxy113.executeUpdate(Unknown
Source)<br>
at
org.hibernate.persister.entity.AbstractEntityPersister.delete(AbstractEntityPersister.java:3240)<br>
at
org.hibernate.persister.entity.AbstractEntityPersister.delete(AbstractEntityPersister.java:3440)<br>
at
org.hibernate.action.internal.EntityDeleteAction.execute(EntityDeleteAction.java:100)<br>
at
org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:362)<br>
at
org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:354)<br>
at
org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:280)<br>
at
org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:326)<br>
at
org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:52)<br>
at
org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1210)<br>
at
org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:399)<br>
at
org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)<br>
at
org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:175)<br>
at
com.evolveum.midpoint.repo.sql.SqlRepositoryServiceImpl.deleteObjectAttempt(SqlRepositoryServiceImpl.java:651)<br>
at
com.evolveum.midpoint.repo.sql.SqlRepositoryServiceImpl.deleteObject_aroundBody6(SqlRepositoryServiceImpl.java:609)<br>
at
com.evolveum.midpoint.repo.sql.SqlRepositoryServiceImpl$AjcClosure7.run(SqlRepositoryServiceImpl.java:1)<br>
at
org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:149)<br>
at
com.evolveum.midpoint.util.aspect.MidpointAspect.wrapSubsystem(MidpointAspect.java:169)<br>
at
com.evolveum.midpoint.util.aspect.MidpointAspect.ajc$inlineAccessMethod$com_evolveum_midpoint_util_aspect_MidpointAspect$com_evolveum_midpoint_util_aspect_MidpointAspect$wrapSubsystem(MidpointAspect.java:1)<br>
at
com.evolveum.midpoint.util.aspect.MidpointAspect.processRepositoryNdc(MidpointAspect.java:59)<br>
at
com.evolveum.midpoint.repo.sql.SqlRepositoryServiceImpl.deleteObject(SqlRepositoryServiceImpl.java:590)<br>
at
com.evolveum.midpoint.repo.cache.RepositoryCache.deleteObject_aroundBody12(RepositoryCache.java:249)<br>
at
com.evolveum.midpoint.repo.cache.RepositoryCache$AjcClosure13.run(RepositoryCache.java:1)<br>
at
org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:149)<br>
at
com.evolveum.midpoint.util.aspect.MidpointAspect.wrapSubsystem(MidpointAspect.java:169)<br>
at
com.evolveum.midpoint.util.aspect.MidpointAspect.ajc$inlineAccessMethod$com_evolveum_midpoint_util_aspect_MidpointAspect$com_evolveum_midpoint_util_aspect_MidpointAspect$wrapSubsystem(MidpointAspect.java:1)<br>
at
com.evolveum.midpoint.util.aspect.MidpointAspect.processRepositoryNdc(MidpointAspect.java:59)<br>
at
com.evolveum.midpoint.repo.cache.RepositoryCache.deleteObject(RepositoryCache.java:247)<br>
at
com.evolveum.midpoint.provisioning.impl.ProvisioningServiceImpl.deleteObject_aroundBody12(ProvisioningServiceImpl.java:870)<br>
at
com.evolveum.midpoint.provisioning.impl.ProvisioningServiceImpl$AjcClosure13.run(ProvisioningServiceImpl.java:1)<br>
at
org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:149)<br>
at
com.evolveum.midpoint.util.aspect.MidpointAspect.wrapSubsystem(MidpointAspect.java:169)<br>
at
com.evolveum.midpoint.util.aspect.MidpointAspect.ajc$inlineAccessMethod$com_evolveum_midpoint_util_aspect_MidpointAspect$com_evolveum_midpoint_util_aspect_MidpointAspect$wrapSubsystem(MidpointAspect.java:1)<br>
at
com.evolveum.midpoint.util.aspect.MidpointAspect.processProvisioningNdc(MidpointAspect.java:69)<br>
at
com.evolveum.midpoint.provisioning.impl.ProvisioningServiceImpl.deleteObject(ProvisioningServiceImpl.java:818)<br>
at
com.evolveum.midpoint.model.controller.ModelController.executeChanges_aroundBody2(ModelController.java:363)<br>
at
com.evolveum.midpoint.model.controller.ModelController$AjcClosure3.run(ModelController.java:1)<br>
at
org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:149)<br>
at
com.evolveum.midpoint.util.aspect.MidpointAspect.wrapSubsystem(MidpointAspect.java:169)<br>
at
com.evolveum.midpoint.util.aspect.MidpointAspect.ajc$inlineAccessMethod$com_evolveum_midpoint_util_aspect_MidpointAspect$com_evolveum_midpoint_util_aspect_MidpointAspect$wrapSubsystem(MidpointAspect.java:1)<br>
at
com.evolveum.midpoint.util.aspect.MidpointAspect.processModelNdc(MidpointAspect.java:79)<br>
at
com.evolveum.midpoint.model.controller.ModelController.executeChanges(ModelController.java:313)<br>
at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)<br>
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)<br>
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br>
at
java.lang.reflect.Method.invoke(Method.java:606)<br>
at
org.apache.wicket.proxy.LazyInitProxyFactory$JdkHandler.invoke(LazyInitProxyFactory.java:434)<br>
at
com.sun.proxy.$Proxy7.executeChanges(Unknown
Source)<br>
at
com.evolveum.midpoint.web.page.admin.configuration.PageDebugList.deleteObjectConfirmedPerformed(PageDebugList.java:515)<br>
at
com.evolveum.midpoint.web.page.admin.configuration.PageDebugList.access$3(PageDebugList.java:509)<br>
at
com.evolveum.midpoint.web.page.admin.configuration.PageDebugList$1.yesPerformed(PageDebugList.java:141)<br>
at
com.evolveum.midpoint.web.component.dialog.ConfirmationDialog$3.onClick(ConfirmationDialog.java:87)<br>
at
org.apache.wicket.ajax.markup.html.AjaxLink$1.onEvent(AjaxLink.java:86)<br>
at
org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java:131)<br>
at
org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:603)<br>
at
sun.reflect.GeneratedMethodAccessor544.invoke(Unknown
Source)<br>
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br>
at
java.lang.reflect.Method.invoke(Method.java:606)<br>
at
org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:258)<br>
at
org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:241)<br>
at
org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:247)<br>
at
org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:226)<br>
at
org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:840)<br>
at
org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)<br>
at
org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:254)<br>
at
org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:211)<br>
at
org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:282)<br>
at
org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:244)<br>
at
org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:188)<br>
at
org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:267)<br>
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)<br>
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)<br>
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311)<br>
at
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116)<br>
at
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)<br>
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)<br>
at
org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)<br>
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)<br>
at
org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:101)<br>
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)<br>
at
org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)<br>
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)<br>
at
org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)<br>
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)<br>
at
org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)<br>
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)<br>
at
org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150)<br>
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)<br>
at
org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:182)<br>
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)<br>
at
org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)<br>
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)<br>
at
org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)<br>
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)<br>
at
org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:125)<br>
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)<br>
at
org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:173)<br>
at
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)<br>
at
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)<br>
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)<br>
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)<br>
at
com.evolveum.midpoint.web.util.MidPointProfilingServletFilter.doFilter_aroundBody0(MidPointProfilingServletFilter.java:69)<br>
at
com.evolveum.midpoint.web.util.MidPointProfilingServletFilter$AjcClosure1.run(MidPointProfilingServletFilter.java:1)<br>
at
org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:149)<br>
at
com.evolveum.midpoint.util.aspect.MidpointAspect.wrapSubsystem(MidpointAspect.java:169)<br>
at
com.evolveum.midpoint.util.aspect.MidpointAspect.ajc$inlineAccessMethod$com_evolveum_midpoint_util_aspect_MidpointAspect$com_evolveum_midpoint_util_aspect_MidpointAspect$wrapSubsystem(MidpointAspect.java:1)<br>
at
com.evolveum.midpoint.util.aspect.MidpointAspect.processWebNdc(MidpointAspect.java:84)<br>
at
com.evolveum.midpoint.web.util.MidPointProfilingServletFilter.doFilter(MidPointProfilingServletFilter.java:65)<br>
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)<br>
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)<br>
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)<br>
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)<br>
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)<br>
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)<br>
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)<br>
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)<br>
at
org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:879)<br>
at
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:617)<br>
at
org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1760)<br>
at
java.lang.Thread.run(Thread.java:724)<br>
Caused by:
org.h2.jdbc.JdbcSQLException:
Referential
integrity
constraint
violation:
"FK_TRIGGER_OWNER:
PUBLIC.M_TRIGGER
FOREIGN
KEY(OWNER_ID,
OWNER_OID)
REFERENCES
PUBLIC.M_OBJECT(ID,
OID) (0,
'f17ab2a1-a6ce-4ad1-b057-6537bfc49cc8')";
SQL statement:<br>
delete from
m_object where
id=? and oid=?
[23503-171]<br>
at
org.h2.message.DbException.getJdbcSQLException(DbException.java:329)<br>
at
org.h2.message.DbException.get(DbException.java:169)<br>
at
org.h2.message.DbException.get(DbException.java:146)<br>
at
org.h2.constraint.ConstraintReferential.checkRow(ConstraintReferential.java:414)<br>
at
org.h2.constraint.ConstraintReferential.checkRowRefTable(ConstraintReferential.java:431)<br>
at
org.h2.constraint.ConstraintReferential.checkRow(ConstraintReferential.java:307)<br>
at
org.h2.table.Table.fireConstraints(Table.java:873)<br>
at
org.h2.table.Table.fireAfterRow(Table.java:890)<br>
at
org.h2.command.dml.Delete.update(Delete.java:99)<br>
at
org.h2.command.CommandContainer.update(CommandContainer.java:75)<br>
at
org.h2.command.Command.executeUpdate(Command.java:230)<br>
at
org.h2.server.TcpServerThread.process(TcpServerThread.java:334)<br>
at
org.h2.server.TcpServerThread.run(TcpServerThread.java:150)<br>
at
java.lang.Thread.run(Thread.java:724)</p>
<p
style="margin:
0px; display:
inline;">at
org.h2.engine.SessionRemote.done(SessionRemote.java:568)<br>
at
org.h2.command.CommandRemote.executeUpdate(CommandRemote.java:181)<br>
at
org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:156)<br>
at
org.h2.jdbc.JdbcPreparedStatement.executeUpdate(JdbcPreparedStatement.java:142)<br>
at
com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:105)<br>
at
sun.reflect.GeneratedMethodAccessor407.invoke(Unknown
Source)<br>
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br>
at
java.lang.reflect.Method.invoke(Method.java:606)<br>
at
org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:122)<br>
... 121 more<br>
</p>
</code></div>
</li>
</ul>
</div>
</span></li>
</ul>
</div>
</span></li>
</ul>
</div>
</li>
</ul>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>
<div style="font-family: Times New Roman; color: #000000;
font-size: 16px">
<hr tabindex="-1">
<div id="divRpF109491" style="direction: ltr;"><font
color="#000000" face="Tahoma" size="2"><b>De :</b> <a
moz-do-not-send="true"
class="moz-txt-link-abbreviated"
href="mailto:midpoint-bounces@lists.evolveum.com">midpoint-bounces@lists.evolveum.com</a>
[<a moz-do-not-send="true"
class="moz-txt-link-abbreviated"
href="mailto:midpoint-bounces@lists.evolveum.com">midpoint-bounces@lists.evolveum.com</a>]
de la part de Radovan Semancik [<a
moz-do-not-send="true"
class="moz-txt-link-abbreviated"
href="mailto:radovan.semancik@evolveum.com">radovan.semancik@evolveum.com</a>]<br>
<b>Date d'envoi :</b> 30 septembre 2013 11:15<br>
<b>À :</b> <a moz-do-not-send="true"
class="moz-txt-link-abbreviated"
href="mailto:midpoint@lists.evolveum.com">midpoint@lists.evolveum.com</a><br>
<b>Objet :</b> Re: [midPoint] RE : RE : RE : RE : RE :
Namespace problem<br>
</font><br>
</div>
<div>
<div class="moz-cite-prefix">On 09/30/2013 04:10 PM,
Belleville-Rioux, Vincent wrote:<br>
</div>
<blockquote type="cite">
<style type="text/css" id="owaParaStyle"></style>
<div style="direction:ltr; font-family:Tahoma;
color:#000000; font-size:10pt">
<div>We have about 10k new students each semester
and also have about the same number of students
that get "offboarded" from some services due to
various reasons.</div>
<div><br>
</div>
<div>What we're trying to evaluate is how we could
automate such state changes so we can do something
like :</div>
<div><br>
</div>
<div>- 1 month before the start of the semester, all
students registered to at least one class will get
their account created / activated. A notification
message will be sent.</div>
<div><br>
</div>
<div>- 12 months after the end of the last semester
where the student had at least one class, the
account will be deactivated and a notification
message will be sent.</div>
</div>
</blockquote>
<br>
This is quite common scenario both in enterprise and
academia. And this was actually a reason to create
time-based mappings. Therefore it should work even in
v2.2 but the limitation is that is should be applied to
the entire account and not just a single role. The basic
idea is like this:<br>
<br>
MidPoint user will be created in midPoint as soon as we
know about such record. E.g. it can be synchronized from
HR (or any equivalent academic source system). The key
idea is that user's validFrom date will be set to
onboarding date (or hire date or sunrise date or
whateverYouCallIt ;-). The activation
administrativeStatus of the user should be empty (null).
This will cause that midPoint will compute effective
user activation status based on validFrom, validTo and
current date.<br>
<br>
Assign any roles to the user, e.g. using an object
template. The roles should represent a state of the user
as it should look like during semester. You do not need
to specify any conditions in the object template
mappings nor any conditions in the role outbound
mappings. The roles can be assigned anytime, even before
semester.<br>
<br>
Define a time-based activation mapping for the resources
that you want to "pre-provision" or for whose you want
to delay de-provisioning. An example is here: <a
moz-do-not-send="true" class="moz-txt-link-freetext"
href="https://wiki.evolveum.com/display/midPoint/Resource+Schema+Handling%3A+Activation"
target="_blank">
https://wiki.evolveum.com/display/midPoint/Resource+Schema+Handling%3A+Activation</a>
(see "Mapping Time Constraints" section).<br>
<br>
And that's it. Before the semester the user has all the
roles, but as the time is before user's validFrom the
activation mapping in the resource definitions will not
be used and the accounts will not be created. When the
semester starts the time passes through validFrom.
MidPoint detects that (automatically) and the mapping
will be evaluated differently. The accounts will get
created. And similar mechanism also applies to delayed
deprovisioning. The examples are actually slightly more
complex than your requirement as they are set up to
create a disabled account 5 days before onboarding and
then enable it right on the onboarding date.<br>
<br>
The current limitation is that this applies to all
accounts on the resource. If you want to apply it only
to some accounts you have to play with the mapping
conditions. This may be tricky but it should work.
However, this is not the ideal way how to create
maintainable system. Therefore we plan couple of
improvements:<br>
1: support account types (this is called "intent" in
midPoint terminology), e.g. account type "user",
"student", "admin", "tester", .... you can specify
different mappings for each type. Most of the work on
this feature is already done. But nobody stated that
this is important enough to give us enough motivation to
finally complete and test it. :-)<br>
2: support similar time-based mappings in
assignment/inducement conditions. In such a case you can
specify this behaviour per role. This is slightly more
difficult to finish, but still possible.<br>
<br>
<blockquote type="cite">
<div style="direction:ltr; font-family:Tahoma;
color:#000000; font-size:10pt">
<div>The startDate and endDate are properties we can
read from an SQL table (but I'm simulating that
with a CSV file for now). I guess we'll have to
reconcile at least once a day because that table
will have updates to those dates as students use
our online tools to register / unregister
themselves to classes.<br>
</div>
</div>
</blockquote>
<br>
If it is really a DB table and it has a timestamp column
you may rely on livesync instead. It is more efficient
and much faster. Use reconciliation just as a "last
instance" in case that livesync missed something (e.g.
due to bug in mapping script, because the system was
down for a long time, etc.)<br>
MidPoint is designed to use livesync as a primary
mechanism as often as possible and use reconciliation
only as a "safety net".<br>
<br>
Anyway, unlike some other IDM systems midPoint
configuration is almost entirely the same whether you
use livesync or reconciliation. Therefore it is easy to
experiment with it and fine-tune the setup that works
for you.<br>
<br>
<blockquote type="cite">
<div style="direction:ltr; font-family:Tahoma;
color:#000000; font-size:10pt">
<div>We should also have the ability to override
those values with other dates like "bannedOn" or
"temporaryExtension" :</div>
<div><br>
</div>
<div>The bannedOn date would make any student which
has that date as a non-null value be kept inactive
for 7 years from that date.</div>
<div><br>
</div>
<div>The temporaryExtension date would make any
student account active for 12 months from that
date, regardless of the endDate imported from SQL.</div>
</div>
</blockquote>
<br>
Interesting requirement. Really. I quite like it :-) And
I guess you can implement this behaviour by using the
correct conditions in activation mappings. I quite
wonder how "clean" or maintainable the result will be
though. Anyway, it is worth trying. And if you find that
you cannot do it or that it is unreadable and confusing
then let me know. Maybe we could think about some way
how to improve our mapping code to make it better.
Maintainability of the system is very important for me.<br>
<br>
It is also import for you to realize whether these rules
apply to users (students as physical persons), to
accounts, or to assignments (relation of user to an
account). As far as I know it is usual that a person may
be a student on faculty X and work on faculty Y while
the onboarding dates may be different. Then is would be
best to store the dates in assignments. If this is the
case then midPoint is designed to handle situation like
this quite well. The system of "assignments" is designed
primarily for this purpose. While most of the
functionality for assignments is already there some
pieces of code may still be missing (e.g. the assignment
activation mappings). Therefore it may be best for you
to start with a partial solution such as storing the
dates in users. This can work well for a first phase of
your project. And you can work with us to plan the
required features in the roadmap so you can have it
ready for subsequent phases. IDM projects are not
deployed overnight therefore I believe that we can agree
on a reasonable delivery dates that can work for you.<br>
<br>
<blockquote type="cite">
<div style="direction:ltr; font-family:Tahoma;
color:#000000; font-size:10pt">
<div>So, as you can see, dates are really useful for
our use cases. I understand that this was added
rather quickly to 2.2. Would you suggest we
upgrade our test environment to the latest
snapshots and try and follow the development from
there on?</div>
</div>
</blockquote>
<br>
Not yet :-) .. if you decide to use time-based
activation mappings then it should work well in 2.2. If
you find some bug in this part we will fix it in 2.2.1
as this is important feature. If you decide that you
need more than activation mappings then there is no
point to switching to the development branch yet. The
code is not yet there. In such a case please let us know
and we will figure out when we can deliver that. But I
quite believe that activation mappings are almost
entirely what you need now. And once you have your first
version working we can talk about how to improve it in
the future.<br>
<br>
<pre class="moz-signature" cols="72">--
Radovan Semancik
Software Architect
evolveum.com
</pre>
</div>
</div>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
midPoint mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:midPoint@lists.evolveum.com">midPoint@lists.evolveum.com</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://lists.evolveum.com/mailman/listinfo/midpoint">http://lists.evolveum.com/mailman/listinfo/midpoint</a>
</pre>
</blockquote>
<br>
<pre class="moz-signature" cols="72">--
Ing. Viliam Repáň
Evolveum, s.r.o.
tel: +421 910 797978
mail: <a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:vilo.repan@evolveum.com">vilo.repan@evolveum.com</a>
</pre>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
midPoint mailing list
<a class="moz-txt-link-abbreviated" href="mailto:midPoint@lists.evolveum.com">midPoint@lists.evolveum.com</a>
<a class="moz-txt-link-freetext" href="http://lists.evolveum.com/mailman/listinfo/midpoint">http://lists.evolveum.com/mailman/listinfo/midpoint</a>
</pre>
</blockquote>
<br>
<pre class="moz-signature" cols="72">--
Ing. Viliam Repáň
Evolveum, s.r.o.
tel: +421 910 797978
mail: <a class="moz-txt-link-abbreviated" href="mailto:vilo.repan@evolveum.com">vilo.repan@evolveum.com</a>
</pre>
</body>
</html>