<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Hi Vincent,<br>
<br>
you probably didn't connect to right database, h2 server created new
one for you based on jdbc url that you've put in dbVisualiser:<br>
<br>
this should be jdbc url for midpoint db (if tomcat is running, and
<midpoint.home>/config.xml contains
<asServer>true</asServer> )<br>
jdbc:h2:tcp://127.0.0.1:5438/midpoint;DB_CLOSE_ON_EXIT=FALSE;LOCK_MODE=1;LOCK_TIMEOUT=10000<br>
<br>
otherwise you have to use file access (local connection)<br>
<br>
jdbc:h2:[file:][<path>]<databaseName><br>
<br>
e.g. jdbc:h2:<midpoint.home
path>/midpoint;LOCK_MODE=1;LOCK_TIMEOUT=10000<br>
<br>
Best regards,<br>
<br>
Vilo<br>
<br>
<div class="moz-cite-prefix">On 10/01/2013 03:39 PM,
Belleville-Rioux, Vincent wrote:<br>
</div>
<blockquote
cite="mid:0AD36E0192997748BD28BC68B14C75D0036C3C@Lettre.gst.uqam.ca"
type="cite">
<meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1">
<style type="text/css"></style>
<style type="text/css"></style>
<div style="direction: ltr;font-family: Tahoma;color:
#000000;font-size: 10pt;">Weird, I've installed dbVisualizer and
when I connect to midpoint.h2.db, I see no tables at all... I
tried using something else than the default administrator
password, but it does not work, so it seems that I am connecting
with the good username / password.
<div><br>
</div>
<div>Do you know of any specifics about that h2db in order for
me to query it directly?</div>
<div><br>
</div>
<div>Thanks,</div>
<div><br>
</div>
<div>Vincent</div>
<div><br>
</div>
<div>PS : I tried both with midpoint running and stopped.<br>
<div style="font-family: Times New Roman; color: #000000;
font-size: 16px">
<hr tabindex="-1">
<div id="divRpF264786" style="direction: ltr;"><font
color="#000000" face="Tahoma" size="2"><b>De :</b>
<a class="moz-txt-link-abbreviated" href="mailto:midpoint-bounces@lists.evolveum.com">midpoint-bounces@lists.evolveum.com</a>
[<a class="moz-txt-link-abbreviated" href="mailto:midpoint-bounces@lists.evolveum.com">midpoint-bounces@lists.evolveum.com</a>] de la part de
Belleville-Rioux, Vincent [<a class="moz-txt-link-abbreviated" href="mailto:rioux.vincent@uqam.ca">rioux.vincent@uqam.ca</a>]<br>
<b>Date d'envoi :</b> 1 octobre 2013 09:06<br>
<b>À :</b> midPoint General Discussion<br>
<b>Objet :</b> [midPoint] RE : Undeletable object<br>
</font><br>
</div>
<div>
<div style="direction:ltr; font-family:Tahoma;
color:#000000; font-size:10pt">Hi Vilo,
<div><br>
</div>
<div>I'm on embedded H2 on Tomcat6.</div>
<div><br>
</div>
<div>I am trying to delete it through the repository
objects. I *think* that I might have tried deleting
it while it was being created / updated by a live sync
task / import task.</div>
<div><br>
</div>
<div>From what I understand, it could be the case that
there are other objects referencing that OID somewhere
in the database and this is what prevents the
deletion. Maybe an "on delete cascade" would be a
quick fix? It could have serious side effects,
though... so it could be a better idea to make this
optional with a "force" checkbox or something like
that...</div>
<div><br>
</div>
<div>Another route to fix this, if my theory of
delete-while-create is correct, would be to first add
a "deleted" flag to items that we wish to remove and
then really remove those items only when a cleanup
period happens (which could be made to run only when
no other task might be running).</div>
<div><br>
</div>
<div>I'll try and install an H2db tool to query and see
what's happening in the DB itself.</div>
<div><br>
</div>
<div>Vincent</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div style="font-family:Times New Roman; color:#000000;
font-size:16px">
<hr tabindex="-1">
<div id="divRpF202560" style="direction:ltr"><font
color="#000000" face="Tahoma" size="2"><b>De :</b>
<a class="moz-txt-link-abbreviated" href="mailto:midpoint-bounces@lists.evolveum.com">midpoint-bounces@lists.evolveum.com</a>
[<a class="moz-txt-link-abbreviated" href="mailto:midpoint-bounces@lists.evolveum.com">midpoint-bounces@lists.evolveum.com</a>] de la part
de Viliam Repan [<a class="moz-txt-link-abbreviated" href="mailto:vilo.repan@evolveum.com">vilo.repan@evolveum.com</a>]<br>
<b>Date d'envoi :</b> 1 octobre 2013 08:55<br>
<b>À :</b> midPoint General Discussion<br>
<b>Objet :</b> Re: [midPoint] Undeletable object<br>
</font><br>
</div>
<div>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 type="cite">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"
target="_blank">
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 type="cite">
<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"
target="_blank">"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"
target="_blank">"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"
target="_blank">"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"
target="_blank">"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"
target="_blank">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"
target="_blank">"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"
target="_blank">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"
target="_blank">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"
target="_blank">"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"
target="_blank">"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"
target="_blank">"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"
target="_blank">"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"
target="_blank">"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"
target="_blank">"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"
target="_blank">"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"
target="_blank">"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"
target="_blank">"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"
target="_blank">"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"
target="_blank">"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#"
target="_blank">"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#"
target="_blank">"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;
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-color:rgb(255,194,174)">
<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="display:inline-block;
height:16px; width:16px;
position:absolute;
right:60px; margin-top:26px"></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">
<span class="arrow-right
messages-error-details-bold-arrow"
id="id3ea3_arrow"
style="display:inline-block;
height:16px; width:16px;
float:left; margin:0px
5px"></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">
<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;
color:rgb(210,139,30)">
<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="display:inline-block;
height:16px;
width:16px;
float:left;
margin:0px 5px"></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">
<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;
color:rgb(79,138,16)">
<span
class="messages-details"
style="margin-top:0px"><span class="arrow-right
messages-succ-details-bold-arrow"
id="id3ea7_arrow" style="display:inline-block; height:16px; width:16px;
float:left;
margin:0px
5px"></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;
color:rgb(204,10,12)">
<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="display:inline-block;
height:16px;
width:16px;
float:left;
margin:0px
5px"></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">
<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"
target="_blank">
midpoint-bounces@lists.evolveum.com</a>
[<a moz-do-not-send="true"
class="moz-txt-link-abbreviated"
href="mailto:midpoint-bounces@lists.evolveum.com"
target="_blank">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"
target="_blank">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"
target="_blank">
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"
target="_blank"></fieldset>
<br>
<pre>_______________________________________________
midPoint mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:midPoint@lists.evolveum.com" target="_blank">midPoint@lists.evolveum.com</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://lists.evolveum.com/mailman/listinfo/midpoint" target="_blank">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" target="_blank">vilo.repan@evolveum.com</a>
</pre>
<br>
<fieldset class="mimeAttachmentHeader"
target="_blank"></fieldset>
<br>
<pre>_______________________________________________
midPoint mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:midPoint@lists.evolveum.com" target="_blank">midPoint@lists.evolveum.com</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://lists.evolveum.com/mailman/listinfo/midpoint" target="_blank">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" target="_blank">vilo.repan@evolveum.com</a>
</pre>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<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>