I tried to implement the ForkJoin plugin today, for the first time. The documentation is pretty good but not clear about one specific parameter (which happened to be the one that I needed). When you add the plugin and then select to add a parameter, screenshot, one of the options is FullOuterJoin. According to the documentation is a setting under the JoinPolicy. The implementation is a little different, as you can see if you click on the screenshot. I wasn’t sure what to put here, so I checked with Oracle and was told this:
“… that referenced Full Outer Join as being set to either true or false. ” and “… they believe that setting Full Outer Join to true would mean full outer join is performed, set to false would mean left outer join, and to have standard join we would simply not install the plug-in.”
I was able to confirm that by setting FullOuterJoin to true does indeed allow entries from both (in my case) adapters to be returned. The only caveat to this is that entries that should be joined … are no longer joining. So, still trying to figure that part out.
Update (02/05/2010):
I heard back from OVD Dev as follows:
The documentation for plug-in configuration parameters has to be read as:
Names mentioned in bold are parameters that a plug-in supports.
Under each parameter name, description and semantics of all possible values are explained.
First, for Fork Join plug-in, SecondaryOnlyAttributes, PrimaryAndSecondaryAttributes & JoinPolicy are the only parameters supported. ‘FullOuterJoin’ is not a parameter, but one of the possible values for ‘JoinPolicy’ parameter. The other values are ‘StandardJoin’ & ‘LeftOuterJoin’. Please note that there are no spaces in parameter values.
Second, ODSM displays the list of parameters supported by a plug-in from the plugin manifest file. Since ForkJoin plugin manifest file incorrectly has “FullOuterJoin” as the parameter name instead of “JoinPolicy”, the incorrect parameter name is displayed in ODSM.
As ODSM would not allow specifying any other parameter to the plug-in configuration than what is listed in the plug-in manifest, the workaround, for now, is to please make a backup copy and then edit the <$ORACLE_INSTANCE>/config/OVD/<ComponentName>/adapters.os_xml file as follows, then re-start OVD server:
Change following line from:
<param name=”FullOuterJoin” value=”true”/>
To:
<param name=”JoinPolicy” value=”FullOuterJoin”/>
Third, since the value for “JoinPolicy” is not specified in the plug-in configuration, ForkJoin plug-in assumes “LeftOuterJoin” as the default and hence users that are only in secondary adapter (AD2) were not returned.”
.
Did the solution provided by Oracle Support fix the issue? I am having the same problem, but following the directions did not yield the correct results (e.g. no change in behavior observed).
.
Actually I figured out what my issues was, I didn’t have the “PrimaryAndSecondaryAttributes” set correctly. The documentation says “A list of attributes that are present…”
Do you know if this list is comma, space, etc… delineated? Of is is represented in the adapters.os_xml ni 2 separate parameter values?
.
I am not sure the answer. It has been some time since I was working on this. I’ll take a look to see if I can find an answer to your question though.
.
Found that one too ,,, it’s comma delineated.
Just as a note, the documentation for the out-of-the-box plug-ins is OK but (at least for me) seems to be lacking detail. I have to go though a number of trial/error iterations, sometimes with high levels of logging and debugging turned on, to find the right combinations and applicable value settings for the parameters.
.
Hi Brad,
Hope you are doing good. This is Mahendra an IDM consultant. I am stuck with OVD 11g adapter since two days and I hope I would seek some help from you. I have posted a thread in Oracle Forums https://forums.oracle.com/forums/thread.jspa?messageID=10194881� . I am not sure if Join adapter can do the job. If so can you please provide inputs for writing custom adapter in this scenario. I am also going through Oracle Documentation on developing Custom OVD 11g plugin. Can you please help?
Mahendra,
I don’t think the join adapter is what you are looking for … although you may be able to make it work. The join adapter is typically for joining two different sources into one, where as you appear to have one source but trying to flatten the tree. I would take a look at the plugs (I am thinking flatten tree plugin) to see if this will accomplish what you need.
Here is the documentation on OVD plugins (check out section 4.2):
http://docs.oracle.com/cd/E16764_01/oid.1111/e10046/und_plug.htm#CIHFHJQL
Good luck,
Brad Tumy
Hi Brad,
I need to write a custom plugin to interface to an identity store that only exposes an API. Do you know if there is any ovd api documentation around the requirement I need to satisfy for ovd to function correctly?
J
Oracle provides a “customization” section in their admin guide that discusses creating custom adapters for OVD. http://docs.oracle.com/cd/E23943_01/oid.1111/e10046/adv_cust.htm#CHDHAFEB
Hi,
I am trying to join users from say: Ldap A and Ldap B such that the condition A+(B-A) satisfies. But forkjoin plugin is only returning values from Server A even if I pass FullOuterJoin as parameter, Any inputs on the same ?
Sid,
Really hard to take a guess based on the information you provided. Can you describe the adapters that you have created and any other information about your setup?
Thanks,
Brad
My requirements
B2A B2B
——————————————————–
User1 User5
User2 User6
User3 User1
User4 User4
I need to do a join as A + (B-A) such that I get a final result as User1,User2,User3,User4,User5,User6.
Created two ldap adapters say B2A and B2B. Then I created a join view adapter to join B2A(primary) and B2B(bind). Attached fork join plugin to the join view adapter and passing parameter as FullOuterJoin. But it is still returning Users from B2A.
I need users from both B2A and B2B.
Also could you please provide me the detailed steps to deploy a custom plugin. I have tried the oracle official docs but those are not good enough.
If I had to guess I would say that you are not really “joining” your two adapters. You mention that you are using your second adapter to bind but did you create the join rule?
yes i did. In join rule as cn=cn.
are you getting users, from both adapters, returned when remove the plugin? What do you get when you just have the two adapters (with Join rule) but no plugins? Did you also validate that you get users returned to the individual adapters (by themselves)? Are the adapters pointing to different back-end sources? Do your CNs match in both sources?
Individual adapters returns proper data. When I apply simple join without fork join plugin I get users from B2A (primary) which is a normal result. Everything is working as expected instead of fork join plugin
I thought the forkjoin was just so you could search both adapters. In a simple join you should be able to get both result sets. Trying using simpleconditionjoin instead of Outer Join.
if uesr does not exist in B2A the final result won’t return those users in simple join
You might want to check with Oracle if you are not getting results and you are using the FullOuterJoin parameter.
Thanks. Btw………do you have the steps to deploy a custom plugin in OVD ?
No sorry I don’t have anything beyond the official documentation from Oracle. You appear to be coming from an Oracle owned IP address … have you checked with Product Management or Support on this?
.
You probably figured this out already, but for those who haven’t deployment is easy and straight forward. Copy your JAR to the $OVD_HOME/plugins/lib directory. This directory should already have the OOTB JAR files installed (such as ADPasswords.jar, FlatTree.jar, …)
.
Hi,
I have created Join view adapter having oid as primary adapter and db as joined adapter with join condition cn=cn,
however this join condition is not working that is my join adapter retrivew all the column from both the adapter rather than only matched one
example
in OID i have
A
B
in DB i have
A
B
C
join adapter should give only A & B but it is also giving C 🙁
Any Help APpreciated.