Skip to main content

Team Share & Gems Integration over Oracle SOA

Hello Everyone,

Recently i came across with a requirement to make an integration with GEMS (Some 3rd party tool) and Microsoft share point(Referred as team share in this blog).

Both systems are different with each other in terms of security protocols,message handling. Me & my team spent quiet long time over it so we can easily complete this integration in SOA or OSB but lot's of efforts bring us to always 0 due to many limitations in both platforms and in SOA too.

After wasting more then one month we decided to involve JAVA for making back-end API calls and other integration will be done using SOA, So let me tell you first what all challenges we faced for this integration.


System's over view:

1.https://www.cgs-gems.com/#overview, It's a tool to keep track of some legal processes (No more information available to me over it).
2.Micro-soft share point.

End Req:
1.We will be having few schedulers which will run once/twice in a day and check for new/updated data in GEMS and based on that data will be populated in share point.

Sounds quiet simple but it's not, Let me tell you know few technical points about both.



  1. Gems system provide us REST API which support all possible HTTP method with a dynamic token for every request.
  2. This GEMS token generated with another REST API which is a PFX based secured API, now SOA don't have any direct support for PFX, Ohhh yes we spent so many days over it even involved ORACLE support team but out put is zero (Even today we are in process of same with team).
  3. Microsoft share point uses NTLM authentication which again not working in SOA, ohhh yes again SOA 12c provide support for it but again it's not working and same with it too, ORACLE team is working over it.
  4. Gems have REST API and based on report JSON response elements will be different, you have to use single adapter for all invocations but response will be different, Again we can't use standard NXSD for JSON to XML.
  5. Team share REST API don't support non-English char's so you have to find some other way for JSON processing.
  6. In gems system we don't have any direct way by which can get to know that an existing record is modified or newly created.
Ahhh!!!! Long list of issue.............................................


To over-come technical issues which were point 2 and point 3 we choossed to write some generic piece of code in JAVA, ohhh yes JAVA but we are not using JAVA directly into SOA we have separate JAVA projects which are used inside OSB. Here OSB work's as a wrapper for all GEMS & SHARE POINT JAVA implementation.

Earlier i shared a blog over PFX stuff, Which is generic and any one can use it.

Blog is available here, 

For Team share before REST API we choosed to work with SOAP but due to limited operation provided in SOAP we choosed to go REST.

Team share SOAP implementation is available here, 

But we have to go with team share REST API, You can find java implementation here.



Let me talk now one by one for all issues:



Gems system provide us REST API which support all possible HTTP method with a dynamic token for every request.
Solution: We designed REST adapter in SOA with all basic input/output, Req/headers which                are different for different req's, We kept it as Dynamic.


This GEMS token generated with another REST API which is a PFX based secured API, now SOA don't have any direct support for PFX, Ohhh yes we spent so many days over it even involved ORACLE support team but out put is zero (Even today we are in process of same with team).

Solution: We choossed to design JAVA ,PFX JAVA Client


Microsoft share point uses NTLM authentication which again not working in SOA, ohhh yes again SOA 12c provide support for it but again it's not working and same with it too, ORACLE team is working over it.

Solution:We choossed to design JAVA Team Share REST API JAVA



Gems have REST API and based on report JSON response elements will be different, you have to use single adapter for all invocations but response will be different, Again we can't use standard NXSD for JSON to XML.

Solution: Complete process is large, in short we used XSLT & Xquery for doing this part, A                separate blog is available here JSON Buildup XQUERY SOA



Team share REST API don't support non-English char's so you have to find some other way for JSON processing.


Solution: In Team Share REST API JAVA i added some piece of code which convert JSON                                  String into BYTE[] with UTF-8 CHAR SET, Before it question came why we                                      needed extra piece of code, In Team share it support below JSON header as content-                            type "application/json;odata=verbose", due to verbose you can't send charset headers.
                          
                          We added below piece of code into JAVA team share implementation.
                if (JSONRequest != null && JSONRequest != "") {
byte[] byteData = JSONRequest.getBytes(Charset.forName("UTF-8"));
RequestEntity requestEntity = new ByteArrayRequestEntity(byteData,
"application/json");
postMethod.setRequestEntity(requestEntity);
}



In gems system we don't have any direct way by which can get to know that an existing record is modified or newly created.

Solution: We load daily report and compare all data with complete data and get latest updated              records from final report and based on some unique ID from GEMS, delete existing                            all records and re-create them.



It took us more then 3 months to complete this integration, Integration was quiet simple but due to non-supportive technical protocols and behavior of systems it took us long enough time to complete it, Right now it's in UAT & in coming 1-2 week we will be live with it.

I discovered many new things during this integration, Hope it will help you!!! If you want to know more about this integration, Post your question( Still lots of implementation points are hiding in this blog)

Comments

Post a Comment

Popular posts from this blog

Oracle SOA 12C rest adapter with Custom HTTP headers

Most existing web applications are connected through web services, which are commonly known as SOAP services. More and more users are relying on mobile devices for communication, and they’re looking for lighter ways to access enterprise information on the go. REST services are the answer for the mobile device platform, because they get rapid responses and fast access to data. Oracle SOA Suite 12 c  provides a complete set of service infrastructure components for designing, deploying, and managing composite applications. Oracle SOA Suite 12 c  enables services to be created, managed, and orchestrated into composite applications and business processes. Some time we have need to send HTTP headers in REST service, In OSB we use header component and add what ever is needed but in oracle SOA 12C it's little bit different. Let see how we can do it. Create one SOA Application. Create one SOA Sample project inside SOA Application. Go to composite and drag drop REST adapt

Dynamic Routing in OSB 12C

Dynamic Routing in OSB cab be used when the BusinessService endpoint required to be determine at runtime in message flow. Consider a scenario where OSB has to route the incoming requests to 2 different services based on the CustomerType element value sent in the payload. So create a XQuery resource with the following contents. Observe that we are using the absolute path of business service in configuration as required by dynamic routing. Following is the XML schema that we use:>>  Customer.xsd <?xml version="1.0" encoding="windows-1252" ?> <xsd:schema targetNamespace="http://xmlns.oracle.com/schema/Customer" xmlns:xsd="http://www.w3.org/2001/XMLSchema"             xmlns:ns1="http://xmlns.oracle.com/schema/Customer">   <xsd:complexType name="Customer">     <xsd:sequence>       <xsd:element name="CustomerId" type="xsd:string"/>       <xsd:elemen

Swagger API document from Any WADL & Schema in Oracle SOA

Hi everyone, Hope everyone is doing well these days, Recently i started a project work over how to generate swagger API document for your any REST API, In case if you don't know what is swagger please go and check " https://swagger.io/tools/swagger-editor/ ". It's a great and easy to use tool which will help to create user friendly, human readable form API documentation with extension for generating API client in different languages with capability of testing your API from same. What is swagger editor, Design, describe, and document your API on the first open source editor fully dedicated to OpenAPI-based APIs. The Swagger Editor is great for quickly getting started with the OpenAPI (formerly known as the Swagger Specification) specification, with support for Swagger 2.0 and OpenAPI 3.0.  What benefits you will get by using swagger, Runs Anywhere, The Editor works in any development environment, be it locally or in the web. Smart Feedback, Validate you