<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments for Identity Management Insights</title>
	<atom:link href="http://idminsights.com/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://idminsights.com</link>
	<description>Sun Identity Manager from a developer&#039;s perspective</description>
	<lastBuildDate>Thu, 11 Mar 2010 18:18:59 -0500</lastBuildDate>
	
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Comment on Why I dislike Active Sync Input Forms by Mr. I</title>
		<link>http://idminsights.com/2009/12/01/why-i-dislike-active-sync-input-forms/comment-page-1/#comment-106</link>
		<dc:creator>Mr. I</dc:creator>
		<pubDate>Thu, 11 Mar 2010 18:18:59 +0000</pubDate>
		<guid isPermaLink="false">http://idminsights.com/?p=305#comment-106</guid>
		<description>No.  In the synchronization policy you can select a process rule.  The value is either a rule that returns the name of a workflow to run during active sync or the name of the workflow itself.  If you define one of those rules then the option to select an active sync form disappears.  When active sync runs the workflow is executed with the activeSync.* namespace populated with your resource adapter&#039;s values.</description>
		<content:encoded><![CDATA[<p>No.  In the synchronization policy you can select a process rule.  The value is either a rule that returns the name of a workflow to run during active sync or the name of the workflow itself.  If you define one of those rules then the option to select an active sync form disappears.  When active sync runs the workflow is executed with the activeSync.* namespace populated with your resource adapter&#8217;s values.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Why I dislike Active Sync Input Forms by JB</title>
		<link>http://idminsights.com/2009/12/01/why-i-dislike-active-sync-input-forms/comment-page-1/#comment-105</link>
		<dc:creator>JB</dc:creator>
		<pubDate>Thu, 11 Mar 2010 17:01:01 +0000</pubDate>
		<guid isPermaLink="false">http://idminsights.com/?p=305#comment-105</guid>
		<description>So do you just call viewOptions.Process in your activesync form?</description>
		<content:encoded><![CDATA[<p>So do you just call viewOptions.Process in your activesync form?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Oracle Formally Announces Plans for Sun Identity Manager by Craig</title>
		<link>http://idminsights.com/2010/01/28/oracle-formally-announces-plans-for-sun-identity-manager/comment-page-1/#comment-102</link>
		<dc:creator>Craig</dc:creator>
		<pubDate>Fri, 29 Jan 2010 20:47:47 +0000</pubDate>
		<guid isPermaLink="false">http://idminsights.com/?p=318#comment-102</guid>
		<description>There has been some communication from Oracle that the Sun Identity Manager product will have no new releases (i.e. 9.0).  Their continuation of support for Sun products does not require them to improve the current Sun IdM 8.1 product in any way.  I believe that only a strong customer message to Oracle that this is not acceptable will change Oracle&#039;s mind and force them to continue the development of the Sun IdM product at least in the short term.  This is what happened when Oracle acquired PeopleSoft and that product has continued to be fixed and enhanced.</description>
		<content:encoded><![CDATA[<p>There has been some communication from Oracle that the Sun Identity Manager product will have no new releases (i.e. 9.0).  Their continuation of support for Sun products does not require them to improve the current Sun IdM 8.1 product in any way.  I believe that only a strong customer message to Oracle that this is not acceptable will change Oracle&#8217;s mind and force them to continue the development of the Sun IdM product at least in the short term.  This is what happened when Oracle acquired PeopleSoft and that product has continued to be fixed and enhanced.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Good, The Bad &amp; The Ugly by P Diddy</title>
		<link>http://idminsights.com/2010/01/17/the-good-the-bad-the-ugly/comment-page-1/#comment-100</link>
		<dc:creator>P Diddy</dc:creator>
		<pubDate>Mon, 18 Jan 2010 14:04:29 +0000</pubDate>
		<guid isPermaLink="false">http://idminsights.com/?p=316#comment-100</guid>
		<description>Ha! I think you represent 90% of all IDM developers and architects. The other 10% are just SUN employees.</description>
		<content:encoded><![CDATA[<p>Ha! I think you represent 90% of all IDM developers and architects. The other 10% are just SUN employees.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on On Security by VIX</title>
		<link>http://idminsights.com/2009/12/09/on-security/comment-page-1/#comment-92</link>
		<dc:creator>VIX</dc:creator>
		<pubDate>Mon, 14 Dec 2009 18:02:55 +0000</pubDate>
		<guid isPermaLink="false">http://idminsights.com/?p=308#comment-92</guid>
		<description>Yes, this works unless you are using Lotus Domino, where the initial password is used for the &quot;ID&quot; file, which contains the private key, and thus must be known. Identity Manager can&#039;t change the Lotus Domino user password without knowing the current password, so the initial must be known.
For all other resources you can reset password if the initial password is forgotten (lost) by the user or the manager.</description>
		<content:encoded><![CDATA[<p>Yes, this works unless you are using Lotus Domino, where the initial password is used for the &#8220;ID&#8221; file, which contains the private key, and thus must be known. Identity Manager can&#8217;t change the Lotus Domino user password without knowing the current password, so the initial must be known.<br />
For all other resources you can reset password if the initial password is forgotten (lost) by the user or the manager.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Netbeans 6.7 &amp; IDM by Netbeans 6.8 &#38; the Sun IDM Plugin</title>
		<link>http://idminsights.com/2009/07/22/netbeans-6-7-idm/comment-page-1/#comment-91</link>
		<dc:creator>Netbeans 6.8 &#38; the Sun IDM Plugin</dc:creator>
		<pubDate>Mon, 14 Dec 2009 12:33:52 +0000</pubDate>
		<guid isPermaLink="false">http://idminsights.com/?p=254#comment-91</guid>
		<description>[...] what seems like a repeat post, Netbeans 6.8 was recently released.  This release of Netbeans 6.8 heralds support of the Java 6 [...]</description>
		<content:encoded><![CDATA[<p>[...] what seems like a repeat post, Netbeans 6.8 was recently released.  This release of Netbeans 6.8 heralds support of the Java 6 [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on On Security by Mr. I</title>
		<link>http://idminsights.com/2009/12/09/on-security/comment-page-1/#comment-89</link>
		<dc:creator>Mr. I</dc:creator>
		<pubDate>Thu, 10 Dec 2009 15:21:33 +0000</pubDate>
		<guid isPermaLink="false">http://idminsights.com/?p=308#comment-89</guid>
		<description>In my case when we have a new account where the password must be set to the user can login for the first time, we have an workflow that is run by a manager (or someone with enough admin access to reset a user&#039;s password) that generates a random one.  So the password is known only at the time that is is being set at.  The original IDM generated password (the one IDM created when the account was provisioned) is never used.  We also flag the password as expired so when the user logs in they are forced to change it immediately.

If the manager fails to write down the password or remember what was generated and displayed on the screen before the user object got checked in then he would need to reset the password again to a new random value.</description>
		<content:encoded><![CDATA[<p>In my case when we have a new account where the password must be set to the user can login for the first time, we have an workflow that is run by a manager (or someone with enough admin access to reset a user&#8217;s password) that generates a random one.  So the password is known only at the time that is is being set at.  The original IDM generated password (the one IDM created when the account was provisioned) is never used.  We also flag the password as expired so when the user logs in they are forced to change it immediately.</p>
<p>If the manager fails to write down the password or remember what was generated and displayed on the screen before the user object got checked in then he would need to reset the password again to a new random value.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on On Security by VIX</title>
		<link>http://idminsights.com/2009/12/09/on-security/comment-page-1/#comment-88</link>
		<dc:creator>VIX</dc:creator>
		<pubDate>Thu, 10 Dec 2009 08:58:04 +0000</pubDate>
		<guid isPermaLink="false">http://idminsights.com/?p=308#comment-88</guid>
		<description>We&#039;ve had a customer requirement to NOT push the IdM user password to resource accounts and we modified the provisioning workflow to be able to do that. IdM will by default recycle/push  user&#039;s password for all resource accounts, if the IdM account exists (thus we are updating and not creating at least from the workflow point of view).

But there is another scenario, where you &quot;need&quot; the password: when you need to distribute the password (to user&#039;s manager, to help desk people, etc.). Sure, this is not really secure, but you user has to login to IdM or Windows somehow... The first password must be known.</description>
		<content:encoded><![CDATA[<p>We&#8217;ve had a customer requirement to NOT push the IdM user password to resource accounts and we modified the provisioning workflow to be able to do that. IdM will by default recycle/push  user&#8217;s password for all resource accounts, if the IdM account exists (thus we are updating and not creating at least from the workflow point of view).</p>
<p>But there is another scenario, where you &#8220;need&#8221; the password: when you need to distribute the password (to user&#8217;s manager, to help desk people, etc.). Sure, this is not really secure, but you user has to login to IdM or Windows somehow&#8230; The first password must be known.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Form Processing by Thomas</title>
		<link>http://idminsights.com/2009/08/06/idm-form-processing/comment-page-1/#comment-87</link>
		<dc:creator>Thomas</dc:creator>
		<pubDate>Thu, 10 Dec 2009 04:53:46 +0000</pubDate>
		<guid isPermaLink="false">http://idminsights.com/?p=270#comment-87</guid>
		<description>The articles are really really good. They provide a concise description and work experience from a developer perspective . Please keep on posting. Thanks a lot.</description>
		<content:encoded><![CDATA[<p>The articles are really really good. They provide a concise description and work experience from a developer perspective . Please keep on posting. Thanks a lot.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on On Security by Mr. I</title>
		<link>http://idminsights.com/2009/12/09/on-security/comment-page-1/#comment-86</link>
		<dc:creator>Mr. I</dc:creator>
		<pubDate>Thu, 10 Dec 2009 02:24:21 +0000</pubDate>
		<guid isPermaLink="false">http://idminsights.com/?p=308#comment-86</guid>
		<description>That is a good point.  If the password isn&#039;t readable in some form it wouldn&#039;t be possible to provision a new account with the same password.  I&#039;m still opposed to having all of my 75,000 of my users&#039; passwords available to be read (directly or derived).  If the IDM repo gets nabbed, read, downloaded, whatever then my user&#039;s Exchange accounts, terminal, PeopleSoft accounts etc are all vulnerable.  I simply cannot afford the scope of risk involved.  

I don&#039;t even use IDM as a login module.  I do pass-through authentication to an LDAP server which does store passwords in a safe format.  IDM isn&#039;t even part of the login module group so when a user changes his password in IDM the Lighthouse resource password is not updated.

So, yes, what that means is when a user is provisioned into a new resource then they either have to change their password through IDM to make all resource passwords in sync.  However, usually that isn&#039;t necessary, we use single-sign on which in turn uses the LDAP resource&#039;s password, which is safely hashed.  But that&#039;s not something that happens every day.  It&#039;s rare that a user has an account provisioned more than once a year.

We&#039;ve sacrificed the convenience of instant provisioning for security.  95% of the time single sign on hides that inconvenience, but not always.</description>
		<content:encoded><![CDATA[<p>That is a good point.  If the password isn&#8217;t readable in some form it wouldn&#8217;t be possible to provision a new account with the same password.  I&#8217;m still opposed to having all of my 75,000 of my users&#8217; passwords available to be read (directly or derived).  If the IDM repo gets nabbed, read, downloaded, whatever then my user&#8217;s Exchange accounts, terminal, PeopleSoft accounts etc are all vulnerable.  I simply cannot afford the scope of risk involved.  </p>
<p>I don&#8217;t even use IDM as a login module.  I do pass-through authentication to an LDAP server which does store passwords in a safe format.  IDM isn&#8217;t even part of the login module group so when a user changes his password in IDM the Lighthouse resource password is not updated.</p>
<p>So, yes, what that means is when a user is provisioned into a new resource then they either have to change their password through IDM to make all resource passwords in sync.  However, usually that isn&#8217;t necessary, we use single-sign on which in turn uses the LDAP resource&#8217;s password, which is safely hashed.  But that&#8217;s not something that happens every day.  It&#8217;s rare that a user has an account provisioned more than once a year.</p>
<p>We&#8217;ve sacrificed the convenience of instant provisioning for security.  95% of the time single sign on hides that inconvenience, but not always.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on On Security by Michael</title>
		<link>http://idminsights.com/2009/12/09/on-security/comment-page-1/#comment-84</link>
		<dc:creator>Michael</dc:creator>
		<pubDate>Wed, 09 Dec 2009 23:50:04 +0000</pubDate>
		<guid isPermaLink="false">http://idminsights.com/?p=308#comment-84</guid>
		<description>How exactly is one going to provision a new account on a new resource for an existing user, and preserve the password, without having the password stored with reversible encryption?

Or are you suggesting that every time a user receives a new account, they should have to change their password?</description>
		<content:encoded><![CDATA[<p>How exactly is one going to provision a new account on a new resource for an existing user, and preserve the password, without having the password stored with reversible encryption?</p>
<p>Or are you suggesting that every time a user receives a new account, they should have to change their password?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Reversible Encryption by On Security</title>
		<link>http://idminsights.com/2009/10/21/reversible-encryption/comment-page-1/#comment-83</link>
		<dc:creator>On Security</dc:creator>
		<pubDate>Wed, 09 Dec 2009 22:43:42 +0000</pubDate>
		<guid isPermaLink="false">http://idminsights.com/?p=292#comment-83</guid>
		<description>[...] databases to restrict their network access.  How does this affect users of Sun IDM?  Well, in the past I have written about how the encrypted data in Sun Identity Manager can easily be reversed.  I [...]</description>
		<content:encoded><![CDATA[<p>[...] databases to restrict their network access.  How does this affect users of Sun IDM?  Well, in the past I have written about how the encrypted data in Sun Identity Manager can easily be reversed.  I [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Q&amp;A: Using Database Stored Procedures by kirpi</title>
		<link>http://idminsights.com/2009/12/03/qa-using-database-stored-procedures/comment-page-1/#comment-79</link>
		<dc:creator>kirpi</dc:creator>
		<pubDate>Fri, 04 Dec 2009 07:15:40 +0000</pubDate>
		<guid isPermaLink="false">http://idminsights.com/?p=306#comment-79</guid>
		<description>Hi,

Nice post.. I&#039;d like to add one thing though:

listAll is I believe the single most important resource action, but I believe it is not used correctly everywhere.. For example, before I was mingling with it, the procedure was used to list only all the users in the resource only. However,  it can and it must also be used to list available resource user attributes such as all available roles and any other objects for that matter.. This way Sun IDM is able to cache the retrieved data and use it later.. Performance increase in a nutshell..

Could you also advise on which adapters you use for Web Services? (SOAP or REST?) Scripted Shell or Scripted JDBC as well?</description>
		<content:encoded><![CDATA[<p>Hi,</p>
<p>Nice post.. I&#8217;d like to add one thing though:</p>
<p>listAll is I believe the single most important resource action, but I believe it is not used correctly everywhere.. For example, before I was mingling with it, the procedure was used to list only all the users in the resource only. However,  it can and it must also be used to list available resource user attributes such as all available roles and any other objects for that matter.. This way Sun IDM is able to cache the retrieved data and use it later.. Performance increase in a nutshell..</p>
<p>Could you also advise on which adapters you use for Web Services? (SOAP or REST?) Scripted Shell or Scripted JDBC as well?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Q&amp;A: Transitioning from ActiveSync Forms to Workflows by Mr. I</title>
		<link>http://idminsights.com/2009/11/30/qa-transitioning-from-activesync-forms-to-workflows/comment-page-1/#comment-77</link>
		<dc:creator>Mr. I</dc:creator>
		<pubDate>Wed, 02 Dec 2009 16:46:33 +0000</pubDate>
		<guid isPermaLink="false">http://idminsights.com/?p=304#comment-77</guid>
		<description>Thanks Nish!  That&#039;s a very good point.  

Ah, the poorly undocumented viewOptions map...  Ok, I agree, it can be done with forms.  You need to make sure feedop is being set correctly, which likely means you need a delete rule in your AS configuration and that&#039;s assuming IDM can even tell the difference between a create and an update.  It&#039;s not always possible for it to make that determination so everything shows up as an update feedop.

My personal preference is still to use the process rule/workflow.  The delete rule, confirmation rules, correlation rules, input form and then still yet another set of workflows each of which should have proper error handling in them... all of which assumes you&#039;ve also only got one type of object, a single user, to update.  Maybe I&#039;m just a sucker for simplicity.</description>
		<content:encoded><![CDATA[<p>Thanks Nish!  That&#8217;s a very good point.  </p>
<p>Ah, the poorly undocumented viewOptions map&#8230;  Ok, I agree, it can be done with forms.  You need to make sure feedop is being set correctly, which likely means you need a delete rule in your AS configuration and that&#8217;s assuming IDM can even tell the difference between a create and an update.  It&#8217;s not always possible for it to make that determination so everything shows up as an update feedop.</p>
<p>My personal preference is still to use the process rule/workflow.  The delete rule, confirmation rules, correlation rules, input form and then still yet another set of workflows each of which should have proper error handling in them&#8230; all of which assumes you&#8217;ve also only got one type of object, a single user, to update.  Maybe I&#8217;m just a sucker for simplicity.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Q&amp;A: Transitioning from ActiveSync Forms to Workflows by Nish</title>
		<link>http://idminsights.com/2009/11/30/qa-transitioning-from-activesync-forms-to-workflows/comment-page-1/#comment-76</link>
		<dc:creator>Nish</dc:creator>
		<pubDate>Wed, 02 Dec 2009 14:26:08 +0000</pubDate>
		<guid isPermaLink="false">http://idminsights.com/?p=304#comment-76</guid>
		<description>Another way to get the same response using ASync Forms is as follows

&lt;pre&gt;

&lt;Field name=&quot;viewOptions.Process&quot;&gt;
    &lt;Expansion&gt;
        &lt;switch&gt;
            &lt;ref&gt;feedOp&lt;/ref&gt;
            &lt;case&gt;
                &lt;s&gt;create&lt;/s&gt;
                &lt;s&gt;WF-Sync-Create&lt;/s&gt;
            &lt;/case&gt;
            &lt;case&gt;
                &lt;s&gt;update&lt;/s&gt;
                &lt;s&gt;WF-Update&lt;/s&gt;
            &lt;/case&gt;
            &lt;case&gt;
                &lt;s&gt;error&lt;/s&gt;
                &lt;s&gt;WF-Sync-Error&lt;/s&gt;
            &lt;/case&gt;
            &lt;case&gt;
                &lt;s&gt;delete&lt;/s&gt;
                &lt;s&gt;WF-Sync-Delete&lt;/s&gt;
            &lt;/case&gt;
        &lt;/switch&gt;
    &lt;/Expansion&gt;
&lt;/Field&gt;
&lt;/pre&gt;

In above example; activesync feedop value is referenced to identify the type of action - create, update, error or delete and viewOptions.Process is set to different workflows to be called by a &quot;switch-case&quot; usage.</description>
		<content:encoded><![CDATA[<p>Another way to get the same response using ASync Forms is as follows</p>
<pre>

&lt;Field name=&quot;viewOptions.Process&quot;&gt;
    &lt;Expansion&gt;
        &lt;switch&gt;
            &lt;ref&gt;feedOp&lt;/ref&gt;
            &lt;case&gt;
                &lt;s&gt;create&lt;/s&gt;
                &lt;s&gt;WF-Sync-Create&lt;/s&gt;
            &lt;/case&gt;
            &lt;case&gt;
                &lt;s&gt;update&lt;/s&gt;
                &lt;s&gt;WF-Update&lt;/s&gt;
            &lt;/case&gt;
            &lt;case&gt;
                &lt;s&gt;error&lt;/s&gt;
                &lt;s&gt;WF-Sync-Error&lt;/s&gt;
            &lt;/case&gt;
            &lt;case&gt;
                &lt;s&gt;delete&lt;/s&gt;
                &lt;s&gt;WF-Sync-Delete&lt;/s&gt;
            &lt;/case&gt;
        &lt;/switch&gt;
    &lt;/Expansion&gt;
&lt;/Field&gt;
</pre>
<p>In above example; activesync feedop value is referenced to identify the type of action &#8211; create, update, error or delete and viewOptions.Process is set to different workflows to be called by a &#8220;switch-case&#8221; usage.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Form Validation by Jeff Norton</title>
		<link>http://idminsights.com/2009/10/23/form-validation/comment-page-1/#comment-75</link>
		<dc:creator>Jeff Norton</dc:creator>
		<pubDate>Wed, 02 Dec 2009 02:23:54 +0000</pubDate>
		<guid isPermaLink="false">http://idminsights.com/?p=293#comment-75</guid>
		<description>I&#039;ve noticed that  blocks seem to only be executed on the Save command.  I would expect it to also execute on the Validate command.  This makes implementing field validation on &quot;wizard&quot; type Forms very difficult.</description>
		<content:encoded><![CDATA[<p>I&#8217;ve noticed that  blocks seem to only be executed on the Save command.  I would expect it to also execute on the Validate command.  This makes implementing field validation on &#8220;wizard&#8221; type Forms very difficult.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Netbeans 6.7 &amp; IDM by Karl H. Beckers</title>
		<link>http://idminsights.com/2009/07/22/netbeans-6-7-idm/comment-page-1/#comment-69</link>
		<dc:creator>Karl H. Beckers</dc:creator>
		<pubDate>Fri, 06 Nov 2009 11:12:04 +0000</pubDate>
		<guid isPermaLink="false">http://idminsights.com/?p=254#comment-69</guid>
		<description>Just reread my own comment. What I meant to say was: Support for 6.5.1 is included in current SVN, now. Support for 6.7.x and 6.8 is very likely to come in 9.0 but is not in SVN, yet, because of a NB bug which caused 6.7.1 and 6.8m1 to fail the unit tests.

About backward compatibility: The IDE will continue to be compatible with older versions of IDM. The much requested feature to detect the state of a configured app server (e. g. if it has been started by some means outside NB) will make it much less likely for a plugin built against NB 6.5.1 to work with 6.8 without change, though.</description>
		<content:encoded><![CDATA[<p>Just reread my own comment. What I meant to say was: Support for 6.5.1 is included in current SVN, now. Support for 6.7.x and 6.8 is very likely to come in 9.0 but is not in SVN, yet, because of a NB bug which caused 6.7.1 and 6.8m1 to fail the unit tests.</p>
<p>About backward compatibility: The IDE will continue to be compatible with older versions of IDM. The much requested feature to detect the state of a configured app server (e. g. if it has been started by some means outside NB) will make it much less likely for a plugin built against NB 6.5.1 to work with 6.8 without change, though.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Q &amp; A: Generating a Password in a Workflow (or a Form) by paulwalker</title>
		<link>http://idminsights.com/2009/10/14/q-a-generating-a-password-in-a-workflow-or-a-form/comment-page-1/#comment-67</link>
		<dc:creator>paulwalker</dc:creator>
		<pubDate>Thu, 29 Oct 2009 17:01:18 +0000</pubDate>
		<guid isPermaLink="false">http://idminsights.com/?p=291#comment-67</guid>
		<description>Here&#039;s a complete Rule, HTH (hope the XML formatting comes out ok)


                If you pass generatePassword a nonexistant policy name it returns null
                
                
                    
                        
                            
                        
                        
                            
                            Policy
                            policyName
                        
                        
                    
                
            </description>
		<content:encoded><![CDATA[<p>Here&#8217;s a complete Rule, HTH (hope the XML formatting comes out ok)</p>
<p>                If you pass generatePassword a nonexistant policy name it returns null</p>
<p>                            Policy<br />
                            policyName</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Reverse Indexes with an Oracle Repository by Mr. I</title>
		<link>http://idminsights.com/2009/08/30/reverse-indexes-with-an-oracle-repository/comment-page-1/#comment-66</link>
		<dc:creator>Mr. I</dc:creator>
		<pubDate>Wed, 28 Oct 2009 19:12:58 +0000</pubDate>
		<guid isPermaLink="false">http://idminsights.com/?p=280#comment-66</guid>
		<description>Thanks for the low level details.  Sometimes that&#039;s all magic...

Actually whether or not the indexes are a problem is likely dependent on what version of Oracle you use.  I probably forgot to mention that.  :) 

I started with Oracle 9 as my IDM repository a while back and went through several upgrades since then.  Reversing the indexes early on in my IDM life resulted in a huge boost.      It was also recommended by our professional services people too.

I guess it&#039;s not really necessary anymore and has been part of my superstitious performance tweaks since then.  (As is my daily ritual of waving a rubber chicken and dancing in a circle in the morning to appease the performance gods. :) )  

Even Sun has fixed the generation unique identifies in the database to be more random with the first few characters as of a recent 8.1 IDM patch.  But heck, I&#039;ll take whatever tweaks I can get!</description>
		<content:encoded><![CDATA[<p>Thanks for the low level details.  Sometimes that&#8217;s all magic&#8230;</p>
<p>Actually whether or not the indexes are a problem is likely dependent on what version of Oracle you use.  I probably forgot to mention that.  <img src='http://idminsights.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </p>
<p>I started with Oracle 9 as my IDM repository a while back and went through several upgrades since then.  Reversing the indexes early on in my IDM life resulted in a huge boost.      It was also recommended by our professional services people too.</p>
<p>I guess it&#8217;s not really necessary anymore and has been part of my superstitious performance tweaks since then.  (As is my daily ritual of waving a rubber chicken and dancing in a circle in the morning to appease the performance gods. <img src='http://idminsights.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  )  </p>
<p>Even Sun has fixed the generation unique identifies in the database to be more random with the first few characters as of a recent 8.1 IDM patch.  But heck, I&#8217;ll take whatever tweaks I can get!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Reverse Indexes with an Oracle Repository by Eric</title>
		<link>http://idminsights.com/2009/08/30/reverse-indexes-with-an-oracle-repository/comment-page-1/#comment-65</link>
		<dc:creator>Eric</dc:creator>
		<pubDate>Wed, 28 Oct 2009 18:31:23 +0000</pubDate>
		<guid isPermaLink="false">http://idminsights.com/?p=280#comment-65</guid>
		<description>Great blog!

I wish we had seen this post before we spent a week tracking down the same problem last month. We were running fine for a while, then one day our sync workflow ground to a halt. It was processing 1 record every 45 minutes until we resolved the issue.

But a clarification: our testing indicates that the reverse indexing isn&#039;t what fixed the problem. Whether we use the forward or reverse index (which we didn&#039;t think to try until reading this article) we see the same poor performance. For us the &quot;size=1&quot; change actually fixes the problem, even without using the reverse index. 

[The rest of this is explanation of the details of why the stats gathering is causing problems, but isn&#039;t important unless you care about the &quot;why&quot;, and how the problem manifests under the covers....]

The actual Oracle indexes themselves show the correct number of distinct values in the columns whether you use the forward (normal) or reverse index; they are not &quot;losing&quot; data. The problem is in the Oracle statistics gathering, which creates histograms for the optimizer to use when running queries. The statistics gathering process that only looks at the first 32 bytes of the data in a column when profiling your table, which means that the histograms have the bad data, not the indices. 

Note that the stats gathering process only creates histograms when certain table statistics thresholds are met, so this problem can just suddenly occur one day (as it did for us) when those internal conditions are met.

Based on our DBA&#039;s tests, even when using a reverse index on the table, the statistics gathering still looks at the sequentially first 32 bytes when creating the histogram, so the histogram data we get is still wrong. The bad histogram causes a problem because when Sun IM does user searches, it&#039;s fairly standard to see a query like this:

&lt;code&gt;
SELECT userobj.id, name, &#039;&#039;, &#039;&#039;, summary, &#039;&#039; FROM waveset.userobj WHERE name!=&#039;LASTMODIFIED&#039; and name NOT LIKE &#039;#DEL#%&#039;
and userobj.id IN ( select id from waveset.userattr where attrname=&#039;YOUR_SEARCH_ATTR_NAME&#039; and attrval=&#039;YOUR_SEARCH_ATTR_VALUE&#039; ) order by name
&lt;/code&gt;

If you manually run this query the &quot;correct&quot; way: 

(1) run the &quot;interior&quot; (userattr) query
(2) replace the SQL for the interior query with the results and run the exterior (userobj) query

the execution time (not counting your typing) is very fast, even with neither fix in place.

The problem is that when creating the execution plan for the combined query, the Oracle optimizer looks at the histogram data for the user table and NOT at the number of distinct values in the table itself. Because the histogram says there are only a few distinct values in the userobj table -- in our environment the histogram data was off by a factor of about 1000 -- the optimizer decides to execute the outer query first (returning ALL users), then joins the results to the userattr table to perform the inner query.

By joining all userobj entries to all userattr entries you end up with a colossal result set -- count(userobj)^2 * (# of indexed attributes/user) -- and performance comes to a screeching halt.

By setting the &quot;method_opt=&gt;&#039;FOR ALL COLUMNS SIZE 1&quot; argument in the stats gathering, you are basically telling the stats gathering not to create the histogram data, so when the optimizer goes to build the execution plan it must look directly at the index to retrieve the number of distinct entries, instead of looking at the histogram statistics describing the index. It then sees the actual number in both tables, and creates a more rational execution plan. 

Again, the end result is the same (bad performance), and the stats fix you list is what we came up with too, but the Oracle issue isn&#039;t as bad as &quot;Oracle indexes are wrong&quot;. Turning off the histograms probably has some side effect on optimization, but it&#039;s certainly better than the performance hit this problem causes. It&#039;s also possible to just remove the histograms on the affected (ID) columns, though that&#039;s more work</description>
		<content:encoded><![CDATA[<p>Great blog!</p>
<p>I wish we had seen this post before we spent a week tracking down the same problem last month. We were running fine for a while, then one day our sync workflow ground to a halt. It was processing 1 record every 45 minutes until we resolved the issue.</p>
<p>But a clarification: our testing indicates that the reverse indexing isn&#8217;t what fixed the problem. Whether we use the forward or reverse index (which we didn&#8217;t think to try until reading this article) we see the same poor performance. For us the &#8220;size=1&#8243; change actually fixes the problem, even without using the reverse index. </p>
<p>[The rest of this is explanation of the details of why the stats gathering is causing problems, but isn't important unless you care about the "why", and how the problem manifests under the covers....]</p>
<p>The actual Oracle indexes themselves show the correct number of distinct values in the columns whether you use the forward (normal) or reverse index; they are not &#8220;losing&#8221; data. The problem is in the Oracle statistics gathering, which creates histograms for the optimizer to use when running queries. The statistics gathering process that only looks at the first 32 bytes of the data in a column when profiling your table, which means that the histograms have the bad data, not the indices. </p>
<p>Note that the stats gathering process only creates histograms when certain table statistics thresholds are met, so this problem can just suddenly occur one day (as it did for us) when those internal conditions are met.</p>
<p>Based on our DBA&#8217;s tests, even when using a reverse index on the table, the statistics gathering still looks at the sequentially first 32 bytes when creating the histogram, so the histogram data we get is still wrong. The bad histogram causes a problem because when Sun IM does user searches, it&#8217;s fairly standard to see a query like this:</p>
<p><code><br />
SELECT userobj.id, name, '', '', summary, '' FROM waveset.userobj WHERE name!='LASTMODIFIED' and name NOT LIKE '#DEL#%'<br />
and userobj.id IN ( select id from waveset.userattr where attrname='YOUR_SEARCH_ATTR_NAME' and attrval='YOUR_SEARCH_ATTR_VALUE' ) order by name<br />
</code></p>
<p>If you manually run this query the &#8220;correct&#8221; way: </p>
<p>(1) run the &#8220;interior&#8221; (userattr) query<br />
(2) replace the SQL for the interior query with the results and run the exterior (userobj) query</p>
<p>the execution time (not counting your typing) is very fast, even with neither fix in place.</p>
<p>The problem is that when creating the execution plan for the combined query, the Oracle optimizer looks at the histogram data for the user table and NOT at the number of distinct values in the table itself. Because the histogram says there are only a few distinct values in the userobj table &#8212; in our environment the histogram data was off by a factor of about 1000 &#8212; the optimizer decides to execute the outer query first (returning ALL users), then joins the results to the userattr table to perform the inner query.</p>
<p>By joining all userobj entries to all userattr entries you end up with a colossal result set &#8212; count(userobj)^2 * (# of indexed attributes/user) &#8212; and performance comes to a screeching halt.</p>
<p>By setting the &#8220;method_opt=&gt;&#8217;FOR ALL COLUMNS SIZE 1&#8243; argument in the stats gathering, you are basically telling the stats gathering not to create the histogram data, so when the optimizer goes to build the execution plan it must look directly at the index to retrieve the number of distinct entries, instead of looking at the histogram statistics describing the index. It then sees the actual number in both tables, and creates a more rational execution plan. </p>
<p>Again, the end result is the same (bad performance), and the stats fix you list is what we came up with too, but the Oracle issue isn&#8217;t as bad as &#8220;Oracle indexes are wrong&#8221;. Turning off the histograms probably has some side effect on optimization, but it&#8217;s certainly better than the performance hit this problem causes. It&#8217;s also possible to just remove the histograms on the affected (ID) columns, though that&#8217;s more work</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Form Processing by Mike Murphy</title>
		<link>http://idminsights.com/2009/08/06/idm-form-processing/comment-page-1/#comment-37</link>
		<dc:creator>Mike Murphy</dc:creator>
		<pubDate>Tue, 29 Sep 2009 14:04:41 +0000</pubDate>
		<guid isPermaLink="false">http://idminsights.com/?p=270#comment-37</guid>
		<description>Thanks for publishing these extremely helpful and insightful articles.  I recently completed a major customization &amp; rebranding effort on the /user interface using IDM 7.1.  I sure wish I&#039;d discovered your site before, since you have nicely documented things about the product installation as well as the form processing that I wrangled with for weeks. I can relate to your comments about the documentation and look over the IDM 8.1 material more closely!  

Best regards, </description>
		<content:encoded><![CDATA[<p>Thanks for publishing these extremely helpful and insightful articles.  I recently completed a major customization &amp; rebranding effort on the /user interface using IDM 7.1.  I sure wish I&#8217;d discovered your site before, since you have nicely documented things about the product installation as well as the form processing that I wrangled with for weeks. I can relate to your comments about the documentation and look over the IDM 8.1 material more closely!  </p>
<p>Best regards,</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Reverse Indexes with an Oracle Repository by Identity Management Insights &#187; Reverse Repository Indexes [Update]</title>
		<link>http://idminsights.com/2009/08/30/reverse-indexes-with-an-oracle-repository/comment-page-1/#comment-32</link>
		<dc:creator>Identity Management Insights &#187; Reverse Repository Indexes [Update]</dc:creator>
		<pubDate>Thu, 03 Sep 2009 17:45:02 +0000</pubDate>
		<guid isPermaLink="false">http://idminsights.com/?p=280#comment-32</guid>
		<description>[...] Repository Indexes [Update]  September 3rd, 2009 Leave a comment Go to comments         Hot on my last post about reverse indexes is the IDM 8.1 Patch 4 release. Of interested regarding the IDs of objects in [...]</description>
		<content:encoded><![CDATA[<p>[...] Repository Indexes [Update]  September 3rd, 2009 Leave a comment Go to comments         Hot on my last post about reverse indexes is the IDM 8.1 Patch 4 release. Of interested regarding the IDs of objects in [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on IAPI Javadoc Finally Found with IDM 8.1 Patch 2 by Chris</title>
		<link>http://idminsights.com/2009/07/06/iapi-javadoc-finally-found-with-idm-8-1-patch-2/comment-page-1/#comment-31</link>
		<dc:creator>Chris</dc:creator>
		<pubDate>Thu, 27 Aug 2009 17:06:36 +0000</pubDate>
		<guid isPermaLink="false">http://idminsights.com/?p=233#comment-31</guid>
		<description>I&#039;m glad someone else got some use out of this - it was me that raised the support call to get this issue sorted. I was trying to develop an ActiveSync resource adapter and couldn&#039;t believe this fundamental part of the process had no documentation. It only took them a day to get it to me, god knows how much pain they&#039;ve put people through because of that.

Having said that, as you&#039;ve pointed out it was a bit of an anticlimax. As with much of the documentation, the javadocs provided next to no help!</description>
		<content:encoded><![CDATA[<p>I&#8217;m glad someone else got some use out of this &#8211; it was me that raised the support call to get this issue sorted. I was trying to develop an ActiveSync resource adapter and couldn&#8217;t believe this fundamental part of the process had no documentation. It only took them a day to get it to me, god knows how much pain they&#8217;ve put people through because of that.</p>
<p>Having said that, as you&#8217;ve pointed out it was a bit of an anticlimax. As with much of the documentation, the javadocs provided next to no help!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Anonymous Interface by Identity Management Insights &#187; Security Issues with the Anonymous Interface</title>
		<link>http://idminsights.com/2009/08/18/the-anonymous-interface/comment-page-1/#comment-29</link>
		<dc:creator>Identity Management Insights &#187; Security Issues with the Anonymous Interface</dc:creator>
		<pubDate>Tue, 25 Aug 2009 01:10:31 +0000</pubDate>
		<guid isPermaLink="false">http://idminsights.com/?p=275#comment-29</guid>
		<description>[...] Issues with the Anonymous Interface  August 24th, 2009 Leave a comment Go to comments         In my previous post I covered some details about the anonymous interface.  While I was writing it I discovered a [...]</description>
		<content:encoded><![CDATA[<p>[...] Issues with the Anonymous Interface  August 24th, 2009 Leave a comment Go to comments         In my previous post I covered some details about the anonymous interface.  While I was writing it I discovered a [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Netbeans 6.7 &amp; IDM by Mr. I</title>
		<link>http://idminsights.com/2009/07/22/netbeans-6-7-idm/comment-page-1/#comment-28</link>
		<dc:creator>Mr. I</dc:creator>
		<pubDate>Tue, 18 Aug 2009 02:02:25 +0000</pubDate>
		<guid isPermaLink="false">http://idminsights.com/?p=254#comment-28</guid>
		<description>That&#039;s fantastic news!  Do you know if the 8.1 plugin remain backwards compatible with 7.1 for those of us still transitioning to 8.1?</description>
		<content:encoded><![CDATA[<p>That&#8217;s fantastic news!  Do you know if the 8.1 plugin remain backwards compatible with 7.1 for those of us still transitioning to 8.1?</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Dynamic page generated in 3.500 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2010-03-11 13:27:20 -->
<!-- Compression = gzip -->