Skip to main content

ERP implementation benchmark: Comparing SAP, Oracle, and Microsoft

Summary: Recent research compares important dimensions of IT project success and failure on ERP systems from SAP, Oracle, and Microsoft Dynamics.
A recent survey (PDF download) by Panorama Consulting Solutions compares important dimensions of IT project success and failure with respect to ERP systems from SAP, Oracle, and Microsoft Dynamics.
Choosing the colors of ERP
Photo credit: "Choosing the colors of ERP" by Michael Krigsman
According to the report, the data set consists of over 2000 respondents from 61 countries who have selected or
implemented SAP, Oracle or Microsoft Dynamics ERP solutions between February 2006 and May 2012.
Market share. As the diagram below shows, the report indicates that SAP holds the largest market share of three vendors, with 22% share. The market share difference between SAP and everyone else is quite large.
ERP market share
Selection rates. Given SAP's market share, it is no surprise the company often appears on procurement short lists, as indicated in this chart:
ERP short lists
Although SAP achieves the top spot in short lists, both Oracle and Microsoft are more frequently chosen than SAP. As the survey report states: the study suggests that after "assessing the available information, organizations are not easily convinced that SAP is the best option." It is possible that SAP's reputation for being expensive and complicated to implement scares potential buyers.
Implementation duration. According to the survey, Oracle projects show the largest gap between planned and actual implementation durations, as the graph shows:
ERP implementationtime
In general, Microsoft has the smallest implementations, relative to Oracle and SAP. Overall, 61% of all implementations reported in the survey run late. This number is not surprising because it is consistent with data from other research.
The study also lists the reasons that projects run late. As listed in the table below, technical issues cause only a small percentage of projects to run late. More commonly, projects are late due organizational, business, and project management challenges.
ERP delay reasons
SUMMARY HIGHLIGHTS
The report presents the following overall summary information:
SAP
  • Largest share of the market
  • Highest short-listing rate
  • Lowest selection rate when short-listed
  • Longest payback period
Oracle
  • Highest selection rate when short-listed
  • Longest implementation duration
  • Largest delta between planned and actual implementation duration
  • Lowest percent of users who realized between 81- and 100-percent of benefits
Microsoft Dynamics
  • Smallest share of the market
  • Lowest short-listing rate
  • Shortest implementation duration
  • Highest percentage of users who realized between 81- and 100-percent of benefits
CIO STRATEGY CONCLUSIONS
The survey data suggests that Microsoft Dynamics is doing something right, despite its low market share. However, it is likely that Dynamics projects tend to be smaller than those from SAP or Oracle, which explains the shorter project and higher success rates.
Oracle comes off worst among the three vendors, based on the lowest benefits realization and longest gap between planned and actual project duration. SAP has the longest payback period, suggesting these projects may involve greater business process complexity than is typical from the other vendors.
Before making decisions based on this study, ERP buyers should be aware of an important deficiency in the survey reporting. Since the survey does not distinguish company size, the results are likely an average of projects of all sizes; the results might be significantly different if we were to look at breakdowns based on project and company size. For this reason, the survey is interesting and even helpful, but ultimately less useful than would otherwise be the case.

Popular posts from this blog

Mark All for Open Cust Trans and Open Vend Trans

We have situations where there are lots of open transactions that need to be settled against each other. This can be the case if auto settlement is turned off. One solution is to add a "Mark All" button to the custOpenTrans or vendOpenTrans forms. This button "checks" the mark checkbox on every line. The user can then uncheck several lines if needed and Update to settle the lines. The code below is an example of what we used on the open vendor transaction screen. The code is very similar on the AR side. One note: I used vendTable.AccountNum in the code below. That should be generalized to work with any buffer that is passed into the open trans form. void customMarkAll() { VendTransOpen localVendTransOpen; VendTrans localVendTrans; container conSum; int linesProcessed; ; //show wait cursor startLengthyOperation(); element.lock(); //remove all prior markings specOffsetVoucher.deleteSpe...

Print Report in Microsoft Dynamics AX 2009 through X++

I am trying to print sales confirmation report on a button click which I have added on Sales Order Detail form in Microsoft Dynamics AX 2009. On click event of that button, I have written following code: void clicked() {     Args                args;     ReportRun           reportRun;     SalesFormLetter     salesFormLetter;     PrintJobSettings    printJobSettings;     CustConfirmJour     custConfirmJour;     RecordSortedList    list                = new RecordSortedList(55);     SalesTable          salesTableUpdate;     ;     SELEC...

Creating Free Text Invoice through X++ code

Job: Calling class from job to run the class public void freeTextInvoicePostTestJob() { Dialog dialog; DialogField dlgCustAcc; DialogGroup dialogPeriodLengthGroup, dialogPeriodLengthGroup1; DialogField dlgLedgerAcc; ; dialog = new Dialog("Free-Text Invoice"); dialogPeriodLengthGroup1 = dialog.addGroup('Cust Table'); dlgCustAcc = dialog.addField(typeid(CustAccount)); dialogPeriodLengthGroup = dialog.addGroup('Ledger Table'); dlgLedgerAcc = dialog.addField(typeid(LedgerAccount)); if(dialog.run()) { if(dlgCustAcc.value() && dlgLedgerAcc.value() != '') FreeTxtInvoiceCreatePost::main(dlgCustAcc.value(), dlgLedgerAcc.value()); else throw error(strfmt("Either CustAccount or LedgerAccount info is missing.")); } } Class: Which creates the free text invoice class FreeTxtInvoiceCreatePost { } static void main(CustAccount _custAccount, LedgerAccount _ledgerAccount) { CustInvoiceTable custInvoiceTable; ...