Despite the fact that OUD does not yet provide the full range of OVD virtualization functionality, I am considering a scenario of early transitioning from a purely OVD setup to a combined OVD and OUD setup. The rationale behind this is to take advantage of the scheduled IDM re-factoring in our organization and move as much as possible of the virtualization functionality from OVD to OUD, since OUD is going to replace OVD, according to Oracle.
Currently in our setup OVDs virtualize multiple database and ldap user stores into single DIT. At the same time OVDs apply various transformations in the inbound and outbound traffic to achieve uniformity on users' objects and conform with IDM federation policy. These transformations are done either via ready or custom mappings. Custom mappings are mostly used to handle conditional attribute value rewrites that can't be done at the source level (e.g. on the database views). From the ready plugins the ones that are most heavily used are the HideEntriesByFilter, ForkJoin, VirtualAttribute and in some cases the ChangeUserRDN, UniqueEntry.
The plan of the transitioning would be to minimize the role of OVD in the stack and let it handle only tasks that can't be done by OUD, such as the database connectivity, with minimal or even with out any data manipulation taking place. On the other hand, on OUD I am going to implement the Join View adapters and take advantage of any virtualization functionality that OUD provides out-of-the-box.
However what makes this plan worth considering for me, is that I will be able to rewrite our old python based custom mappings, directly on OUD APIs instead of the soon deprecated OVD's API, assuming that OUD API is at least as complete as OVD API as far as the inbound and outdound traffic control (search filters, returning attributes etc) is concerned.
So, if anyone can advise on the subject (against or in favour) or provide any hint regarding the OVD and OUD APIs or the out-of-the-box functionalities, that would be really helpful.