Systems Engineering and RDBMS

Archive for August 4th, 2008

Outsourcing – the final steps before the engagement starts

Posted by decipherinfosys on August 4, 2008

A while ago, we had posted what were the steps that we had taken to help one of our clients with their outsourcing needs to an off-shore vendor. You can read more about that post over here. In continuation of that post, the final two steps before the engagement starts are:

1) LOI: Letter of Intent. A letter of intent is signed by the client and the off-shore vendor company to get the process started. This LOI is to state that both the parties agree that they will be working with each other and has hard coded dates in the document to make sure that a MSA (Master Services Engagement) is made available within a set period of time. Rates and payment caps are specified in the LOI to protect the interests of both the parties.

2) MSA: Master Services Agreement. Once the LOI is signed and agreed upon by both the parties, the next step in the process is to prepare a MSA and to review it with both the parties. A MSA goes into a lot of details – here are some high level article categories that it covers:

a) MSA Framework: The purpose of the engagement, the master agreement and service agreements are defined in here.

b) Definitions and Interpretation: All terms are defined so that there is no confusion down the line.

c) Terms: MSA, SLAs and renewal terms are defined in this section.

d) Services: This section covers all the service terms like: Nature of work and time-frame (if on a strict T&M basis), Personnel, HR, Turnover, Account Management, Sub-contractors, Services to Competitors, Compliance with Laws etc.

e) SLAs: Service Level Agreements. The service levels, reporting, remedies, exclusions, benchmarking report and adjustments are defined in this portion.

f) Changes in Services or New Services: This section covers the right to make changes as well as any new services that might be needed down the line.

g) Client’s Responsibilities: The responsibilities and the use of the client facilities & resources are defined in this section.

h) Software and Proprietary Rights: This section defines the IPR (Intellectual Property Rights) related to the business and the software.

i) Payment Terms: This section defines the fees, the taxes, any discounts for the duration of the engagement.

j) Confidentiality and Security: The general obligations, exclusions, data protection, publicity conditions are specified in this section.

k) Dispute Resolutions: Steps for dispute resolutions are defined in this section. This covers things like executive review, mediation, arbitration, fees and costs and provisional remedies.

l) Termination: In the event of the termination of the contract, the terms and conditions are listed in this section.

m) Indemnities, Damages and Insurance: This section defines the rules for Insurance, damages (exclusions and limitations & Mitigation) and Indemnification procedures.

n) Miscellaneous Provisions: Any misc. provisions like Nonperformance, Solicitation, Negotiated Terms, Further Assurances, Governing Law etc. are defined in this section.

This is accompanied by a Set of Schedules to support these articles that are mentioned above.

The documents (LOI and the MSA) are typically prepared by the legal team with feedback from the technical team on specific items. In the case of our client, we achieved successful completion of both of these documents within 4 weeks after the final decision on the vendor engagement was made. If you have a need for finding an off-shore outsourcing team to act as an extended arm of your current team, please feel free to reach us at Outsourcing for more information.

Once these legal documents are in place, the final step is to get the IT accounts set up, the servers/VMs ready for the development/qa environments (this also depends upon the mode that you have selected – whether you want everything to be done in your environment through a VPN tunnel or whether you want to go with a separate environment at the offshore location), the documentation to bring the offshore team up to speed on the domain and the architecture & data model of the product(s) etc..  We will do another post on that topic in the coming days.

Posted in Outsourcing | Leave a Comment »

Ordering of the data

Posted by decipherinfosys on August 4, 2008

This might seem like an obvious thing to a majority of our readers but since this question has come up many times in e-mails from some of our readers as well as at client sites, we thought it needs to be mentioned in here.  At a client site, one of the end users of the system had put in a bug report that when configuring data for an application, the same data was sometimes getting repeated on different pages.  For the application in question, the query for the page was made up of a single configuration table which had close to 1000 rows and using a paging mechanism, 25 records were being displayed per page from that table.

The query that was being used for that page did not have an order by clause.  Also, data was updated as well as new data was inserted into this table as more stores were added to this retail application.  As a result of this, when paging was done and since the SQL did not have an order by clause, at times, the same data appeared across the pages.  This was a web based stateless application.  When paging was done, each page fired off the same SQL but showed different sets of the data (first 25 records on the first page, 26-50 on the next and so on).  Since there was no ORDER BY clause in the SQL, you are not guaranteed to get the records in “exactly” the same order each and every time.  The developer of the page had made an assumption that since the query is based off a single table, the data will be presented in the same order as that of the primary key index.  That is not always true.  As updates are made to the data records or as deletes happen, the internal rowids can change and one cannot rely on the data being returned in the order of the primary key index.  Also, if there is a filter condition that is used by the end user, depending upon the SQL that gets formed, the execution plan generated could be by-passing the PK index and returning all the data from a separate index itself (a covered index).

Moreover, if tomorrow, there is a need to add more tables in this SQL query, then also this assumption will fail.  So, the bottom line is that if you want the records to be returned in a particular order, always use an ORDER BY clause.  In the case of the above application since the application was using an ORM (Object Relational Mapper) to build up the SQL dynamically and was using a configuration table to specify the default order by condition (in case none was specified by the end user), fixing it was a simple data entry change by putting the primary key column in the list.

Posted in DB2 LUW, Oracle, SQL Server | 1 Comment »

VMWare Hypervisor is free now

Posted by decipherinfosys on August 4, 2008

VMWare has announced that it’s ESXi hypervisor will be made a freeware. You can read more on it over here.  This move is apparently to counteract the open source Xen hypervisor and the Microsoft’s $28 hyper-V.

Posted in VMWare | Leave a Comment »