This is my first post as part of “Experience” series. In these posts I’ll discuss on my previous projects about why I worked on it, how I made them, what mistakes I made and my learning while working on them. Hope you will enjoy these boring stuff.
“ProjectDocs” is my first application that i worked on in Omni Offshore. It is 2010, July 1st, my first day in Omni Offshore. I completed the formal introduction and received my ID card and regular stationary like pencil, notebooks and etc. and my manager shown my work space. I was relaxed and had a brief chat with my co-workers and learned about their hobbies and interests. Then comes my manager with few documents and introduced me yo my first project to maintain and it is “ProjectDocs”
I quickly gone through the BRD (Business Requirements Document), a kind of SRS. Let me explain briefly about the project. It is ASP.NET application but depends on Documentum from EMC. Basically this system allows users from shipyard to review drawings from engineering team and make comments on them if they are not clear. Once all clear they use them to build ships. By the way, our company builds big ships for oil and gas companies. We call them FSOs (Floating Storage and Off-take) and FPSOs (Floating Production Storage and Offloading).
So this gave me the opportunity to learn more about Documentum, DQL, DFC and DFS. The system is already in production and I received a list of issues and enhancement requests from business users. I went through the code and started to understand what all about Documentum. I sat with our Documentum resource to learn more about its structure and its query language (DQL). Made few POCs to understand the interfacing part between ASP.NET and Documentum using DFC (Documentum Foundation Classes). Within a week time I was ready to take on those issues and enhancements.
Documentum is a self contained JAVA based system. It hold metadata as well as content of the documents. It supports organising the documents by doctypes and each doctype is defined by its attributes. Consider each doctype is a table in DBMS and attributes as columns for the table. Documentum exposes an API by means of DFC or DFS. DFC is a COM component that should be installed on each client machine. DFS are services exposed from Documentum server. We also can use DQL, a query language to retrieve or update the data from the Documentum system. Initially our ASP.NET application communicates Documentum through DFC.
When I was gone through the code I found that our ASP.NET application is nothing but a wrapper around Documentum functionality and there are many pull and push requests between Documentum and the application. Also I found that the system is very tightly coupled with shipyard name in such a way that they have to create virtually every thing from Documentum structure to ASP.NET application if there is a new shipyard to deal with. In fact that’s what happened, they have 4 such applications with different code base to deal with different shipyards. That means any change have to be done manually on those code bases and deploy separately to the production server.
I concluded that, with the current setup its not possible to make the changes. Also since there are many pull and push requests between Documentum and our application the overall responsiveness is worst and it is getting only to much worse. So I talked to our manager and said we needs to seriously think about this and asked to have a meeting with all the stakeholders.
There are 10 participants in the meeting room and one of them is our GM. That’s hardly one week of me taking the charge and my GM is interested in my opinion. That made me aware of the importance of the system as well as the risk in my recommendations. But I did proceed to the meeting room any my hands and shaking a bit as I am thinking about what to say. Everybody looked at my manager who started the meeting and listed all issues with the current setup. Now all looking at me for my opinion and i said “scrap current setup and build a better system from ground up”. My GM seems not convinced but agreed anyway after couple of discussions.
Now the interesting part, design the new system. I still took Documentum into consideration as that is our central repository of documents and many workflows running on those documents. But this system is internal and becuase of that we need ASP.NET application to interface between public user (shipyard user/Engineering team) and Documentum. The change I made was, keep Documentum only to store documents and moved system data to Oracle. Because of this, the whole business process like commenting and approvals happens on ASP.NET system and final documents will go to Documentum. Due to this, unless I need the document the system does not talk to Documentum where as previously the whole business process is on Documentum.
This change brought flexibility in maintaining the system as you can create as many shipyards you want and assign users to represent them. Due to this we don’t need to touch Documentum every time we have a new shipyard to introduce. As a byproduct to this whole exercise I have a robust understanding over Documentum, DQL, DFS and DFC. This way I am able to bring flexibility and speed into the system which helped the end users. It also helped our IT department in terms of maintenance and reduced the dependency on Documentum resource. And finally reduced cost of ownership to the company as system become very popular so that all our shipyards started using them.