Skip to main content
Case Studies

Odoo ERP for Service and Project Businesses — How CodeVelocity Went from "Guessing" to "Knowing Every Baht" in 90 Days

CodeVelocity, an IT consulting firm with THB 220 million in annual revenue, used to send invoices 25 days late and had no idea which projects were profitable until after they closed. After implementing Odoo ERP, billing cycle dropped to 3 days, utilization rose from 58% to 78%, and revenue increased by 18%.

2 Apr 202615 min
OdooERPProfessional ServicesProject ManagementCase StudyDigital Transformation

“Is this project making money or losing money?” — “…Let’s wait until it closes.”

If you run a service business — whether it’s IT consulting, engineering services, a digital agency, or system integration — you’ve probably heard conversations like this before.

The CEO asks the PM how a current project is doing. The PM says, “It’s going well.” But if the next question is, “What margin are we making?” the answer is usually, “…We’ll know after the project closes.”

That was the reality at CodeVelocity — a 95-person IT consulting and engineering services company with THB 220 million in annual revenue and 18–22 active projects running at the same time.

(Note: The company name and some figures have been adjusted to protect client privacy, but the situation, problems, and results are all real.)


What CodeVelocity Was Facing — 7 Problems That Were Leaking Money

1. Zero project visibility

On the first day we met, Mr. Wichai, CEO of CodeVelocity, told us:

“I’m running a company with THB 220 million in revenue, but I have no idea whether we’re making or losing money right now. I only find out when the quarterly books are closed — and by then it’s already too late.”

Every project was tracked in separate Excel files, each with its own format. Every PM recorded information differently. Some logged hours, some logged days, and some tracked by “phase” with no detail underneath.

The result: no one could answer a basic question like, “How much cost has this project incurred so far versus budget?” until 2–3 months after the project had already ended.

2. Timesheets no one could trust

CodeVelocity had 80 employees who needed to submit timesheets. Their system? Excel.

Everyone filled in timesheets at the end of the month — yes, end of the month, not daily — then sent them to team leads for consolidation. Team leads sent them to PMs for review, PMs sent them to HR for filing, and HR passed them to accounting to calculate project costs.

Ms. Napa, the HR Manager, explained:

“Every month from the 28th to the 31st was HR’s version of hell. We had to chase everyone for timesheets. Some people submitted on the 5th of the following month. Some didn’t send anything at all, so we had to call them. And when they finally did submit, they couldn’t remember what they worked on the week before, so they just filled something in to complete it.”

The issue wasn’t just delay — it was data reliability. If timesheets are inaccurate, project costs are inaccurate. If project costs are wrong, margins are wrong. And everything built on top of that is wrong too.

3. Billing nightmare — invoices delayed by 25 days

This was the problem costing CodeVelocity the most money without realizing it.

Once work was completed, PMs had to gather information from timesheets, delivery documents, and sign-off sheets, then send everything to accounting to create the invoice. Ms. Suda, CFO, explained:

“From the date the work was actually completed to the date the invoice was issued, the average was 25 days. Some projects took 40 days because PMs forgot to send documents, or the information didn’t match and had to be checked again. That meant we had already delivered the work but still hadn’t been paid. Every month, we had a cash flow gap of tens of millions of baht.”

25 days against average monthly revenue of THB 18 million meant CodeVelocity constantly had about THB 15 million stuck in the pipeline — simply because invoices went out too slowly.

4. Resource planning based on “gut feel”

Mr. Ek, the Operations Director, shared something that stunned us:

“I assigned people to projects from memory. I’d walk over to a team lead and ask, ‘Is this person available?’ If they said yes, I’d assign them. But it turned out that ‘available’ meant ‘they still have maybe 20% bandwidth left,’ not truly free. The result was the same people being stacked onto 3–4 projects at once, and then every project ran late.”

No one knew the company’s actual utilization rate. When we helped analyze the data retrospectively, the figure came out to around 58% — meaning 42% of employee working time had effectively “disappeared,” with no one knowing where it went.

5. Quotation → Project → Billing were completely disconnected

Sales prepared quotations in Word and sent PDFs to clients. Once the client approved, the PM opened a new Excel file to plan the work, referring back to the quotation PDF if they could find it. Then when the work was complete, accounting opened the accounting system to create the invoice based on whatever information the PM sent over — if the PM sent it.

The same data was keyed in three separate times by three different people across three different systems. Every handoff was another chance for error.

“Last year we found a case where the quotation rate was THB 2,500 per hour, but accounting billed THB 2,000 per hour because of bad data. We lost THB 380,000 before anyone noticed.” — Ms. Suda, CFO

6. Subcontractor costs that couldn’t be tracked

CodeVelocity worked with around 25–30 freelancers and subcontractors each month. Some were hourly, some fixed price, some milestone-based.

The problem was there was no central place showing which subcontractor worked on which project, what they had delivered, and how much cost had accumulated. Everything sat in each PM’s inbox.

Some months, PMs forgot to tell accounting there were subcontractor costs to record. As a result, project costs were understated. A project looked profitable at first, but once late subcontractor expenses were added, it turned into a loss.

7. Revenue recognition errors

For fixed-price projects lasting 6–12 months, CodeVelocity needed to recognize revenue based on percentage of completion. But when actual completion percentage was unclear — because timesheets were inaccurate and scope tracking was inconsistent — revenue recognition turned into guesswork.

“The auditors have flagged this for two years in a row. If we still don’t fix it this year, we may get a qualified opinion.” — Ms. Suda, CFO


Root Cause Analysis — Why This Happened

When the Enersys team conducted the assessment, we spent 3 weeks interviewing stakeholders at every level, from the CEO down to junior consultants. We found that all 7 problems stemmed from the same 3 root causes:

Root Cause 1: Data lived in silos

  • Quotations were in Sales’ Google Drive
  • Project plans were in PM Excel files
  • Timesheets were in HR’s Excel files
  • Invoices were in the accounting system (a Thai accounting software package)
  • Subcontractor data was in PM email inboxes

With 5 disconnected data sources, real-time reconciliation was impossible.

Root Cause 2: No single source of truth

When the CEO asked a question, everyone gave a different number. The PM said the project was 70% complete. Sales said 50% had already been billed. Accounting said 60% of revenue had been recognized. Everyone was telling the truth — but each was working from a different version of the truth.

Root Cause 3: Every process was manual

Every handoff between departments depended on people manually passing information along. Sales had to “tell” the PM a deal had been won. The PM had to “tell” HR about timesheets. The PM had to “tell” accounting to invoice. People were the most fragile connectors in the entire system — they could forget, be late, or make mistakes.

In short: CodeVelocity did not have a “people problem.” Their employees were capable and committed. The real problem was a system that didn’t enable people to work efficiently.


Comparing the Options — Big ERP Brands vs Odoo vs Staying with the Current Setup

Once the root causes were clear, the next step was choosing the right solution. Our team helped CodeVelocity evaluate 4 options in detail, looking at functionality, cost, risk, and implementation timeline.

Option 1: Enterprise-grade ERP (leading international brands)

Pros:

  • Strong brand, global standards, and auditor confidence
  • Comprehensive Project Management modules
  • Multiple partners available in Thailand

Cons:

  • License cost starting at around THB 4.5 million for 40 users
  • Implementation cost of THB 3–5 million (6–9 months)
  • Customization was very expensive — each change request started in the hundreds of thousands
  • The timesheet module was not designed specifically for professional services and required heavy customization
  • Total first-year cost: THB 8–12 million

Mr. Wichai, the CEO, responded immediately:

“THB 8 million and up for a 95-person company… how long would it take for that ROI to come back?”

Option 2: Cloud subscription ERP (international brand)

Pros:

  • Project Operations modules specifically designed for professional services
  • Smooth integration with productivity tools (Email, Chat, Spreadsheet)
  • Excellent resource scheduling

Cons:

  • License cost around $50–70 per user per month; for 95 users that’s roughly THB 2.5–3.5 million per year
  • Implementation cost of THB 2–4 million (4–8 months)
  • Complex UI with a steep learning curve
  • Thai localization and compliance with Thai accounting standards were still incomplete
  • Required an internal IT team to manage the system, which CodeVelocity did not have
  • Total first-year cost: THB 5–8 million

Option 3: Odoo Enterprise

Pros:

  • Project, Timesheet, HR, Accounting, and CRM modules integrated end-to-end
  • License cost around $31.90 per user per month — for 95 users, roughly THB 1.3 million per year
  • User-friendly interface with a low learning curve
  • Thai localization, tax invoice support, VAT, and withholding tax ready to use
  • Open-source core — can be customized without the restrictions of a closed vendor ecosystem
  • Mobile app for timesheets, so employees can log time anytime, anywhere
  • Total first-year cost: THB 2.5–3.5 million including implementation

Cons:

  • Not a high-profile enterprise brand, so some larger organizations may be less familiar with it
  • Smaller consultant ecosystem in Thailand compared with major ERP brands
  • Success depends on choosing an implementation partner that truly understands professional services, not just license sales

Option 4: Keep the current system and improve Excel

Pros:

  • No additional investment required
  • No change management needed

Cons:

  • All 7 problems remain and get worse as the company grows
  • Auditors may qualify the revenue recognition issue
  • The THB 15 million cash flow gap remains
  • Estimated hidden cost: THB 8–12 million per year from project overruns, slow invoicing, and low utilization

Summary table

Criteria Enterprise ERP Cloud ERP Odoo Enterprise Current system
First-year cost 8–12M 5–8M 2.5–3.5M 0 (but 8–12M hidden cost)
Timeline 6–9 months 4–8 months 3–4 months -
Professional services fit Medium Very good Good None
Thai localization Good Medium Good -
Customization flexibility Low (expensive) Medium High (open source) -
Mobile timesheet Add-on needed Yes Yes No
Learning curve High High Low -

Why CodeVelocity Chose Odoo

After evaluating all four options, CodeVelocity chose Odoo Enterprise for 4 main reasons:

1. Fastest ROI — With a first-year total cost 2–4 times lower than the alternatives and a 3–4 month timeline, CodeVelocity expected payback within 8–10 months.

2. Connected data from start to finish — From quotation (CRM) → project (Project) → timesheet → invoice (Accounting), data flowed continuously without rekeying.

3. Employees would actually use it — A simple UI meant no need for months of training. Consultants who are strong in technology typically don’t want to struggle with complicated ERP systems — Odoo made adoption far easier.

4. Flexible enough for the business model — CodeVelocity had 3 billing models (Time & Material, Fixed Price, Retainer), and Odoo could support all of them without heavy custom development.

“We didn’t choose Odoo because it was the cheapest. We chose it because it was the best fit for our business. The big ERP brands were too big. Excel was too small. Odoo sat right in the middle.” — Mr. Wichai, CEO


Implementation — 90 Days That Changed Everything

The Enersys team worked with CodeVelocity over 90 days, divided into 3 phases:

Phase 1: Foundation (Weeks 1–4)

The first month focused on data and process, not technology.

What we did:

  • Workshops with every department to map current processes (as-is) and future processes (to-be)
  • Defined the core data structure — project types, billing models, cost centers, employee skill matrix
  • Migrated master data — chart of accounts, customer/vendor lists, employee data
  • Configured the core modules — CRM, Project, Timesheet, Accounting, HR

What we did not do:

  • We did not try to replicate every old process in Odoo. If the old process was broken, it needed to change — not be moved into a new system unchanged.

“Enersys told us directly, ‘If the old process is wrong, we’re not going to copy it into the new system. We’ll fix the process first.’ At first that made us nervous, but now we’re very grateful.” — Mr. Ek, Operations Director

Phase 2: Core Modules Go-Live (Weeks 5–8)

In the second month, the core system went live with a 25-person pilot group (2 teams, 5 projects):

  • CRM → Project: Sales created quotations in Odoo, and once the client approved, a single click automatically created a project with task breakdown based on the proposed scope
  • Timesheet: Pilot users began logging timesheets daily via mobile instead of once a month
  • Resource Planning: Dashboards showed real-time utilization for each employee
  • Project Dashboard: PMs could see live project cost accumulation, % completion, and margins

During this phase, adjustments were made based on feedback, such as adding an approval workflow for timesheets exceeding 10 hours per day and alerts when project costs hit 80% of budget.

Phase 3: Full Rollout + Optimization (Weeks 9–12)

In the third month, the rollout expanded to the entire company:

  • Migrated all active projects into Odoo
  • Activated the Accounting module linked directly to projects — invoices could now be created straight from timesheets
  • Set up subcontractor management — tracking subcontractor costs and deliverables by project
  • Configured automatic revenue recognition based on % completion
  • Trained all employees (just 1 day, thanks to the simple UI)
  • Ran the new system in parallel with the old one for 2 weeks to validate accuracy

Change Management — The Hardest Part Wasn’t the System

To be direct, the most difficult part of the implementation wasn’t technical at all — it was people.

Challenge 1: “Daily timesheets? We don’t have time!”

Many employees complained that submitting timesheets every day would waste time. Previously they only filled them in once a month — inaccurate, yes, but convenient.

The solution: the Enersys team designed the process so daily timesheet entry took no more than 2 minutes. The system displayed assigned tasks for selection, so employees didn’t need to type everything manually. Just choose the project, choose the task, enter the hours, and done.

After 2 weeks, the complaints disappeared — because 2 minutes a day was far easier than trying to reconstruct 30 days of work at month-end.

Challenge 2: PMs feared micromanagement

Some PMs worried that once the CEO had real-time dashboards, it would turn into surveillance.

Mr. Wichai, the CEO, held a meeting and made it clear:

“The dashboard is not a CCTV camera. It’s a compass. I’m not using it to see who’s working slowly. I’m using it to see which projects need help, so we can step in before it’s too late.”

Challenge 3: Accounting had to change how it worked

Previously, accounting waited for PMs to send project information before creating invoices. Now, invoices were generated semi-automatically from approved timesheets. The accounting team’s role shifted from “data entry” to “review and approval.”

Ms. Suda, CFO, explained:

“At first the accounting team worried they’d lose their jobs. I had to explain that we weren’t reducing headcount — we were reducing repetitive work. The time saved would go into financial analysis, which the company needs far more than manually typing invoices.”


Results — The Numbers After 6 Months

Billing cycle: from 25 days down to 3 days

This had the biggest impact.

With timesheets recorded daily and approved weekly, accounting could issue invoices within 3 days after delivery. The cash flow gap that used to sit at THB 15 million dropped to under THB 2 million.

Cash unlocked back into the business: approximately THB 13 million

Utilization rate: from 58% up to 78%

Once it became clear who was available and who was overloaded, staffing decisions became far more accurate. Utilization increased by 20 percentage points — meaning for every 100 working hours, CodeVelocity converted 20 additional hours into billable work.

In money terms: 80 employees × average 160 hours/month × 20% improvement × average rate of THB 1,800/hour = about THB 4.6 million per month in additional billable hours potential.

(Of course, not all THB 4.6 million turned into immediate revenue, but the revenue-generating capacity improved dramatically.)

Project overruns: from 40% down to 12%

Previously, 40% of all projects exceeded estimated time or cost. After introducing real-time project dashboards showing burn rate against budget, PMs received alerts when costs reached 70% and 90% of budget. That gave them time to adjust before overruns got out of hand.

Projects that overran dropped from 40% to 12% — and most of the remaining 12% were scope changes that were properly documented and billed.

Revenue increased by 18%

The combined effect of higher utilization, faster billing, fewer project overruns, and better capture and billing of scope changes increased CodeVelocity’s total revenue by 18% year over year, from THB 220 million to around THB 260 million — without hiring a single additional employee.

Other notable metrics

Metric Before After Change
Billing cycle 25 days 3 days -88%
Utilization rate ~58% 78% +20pp
Project overrun rate 40% 12% -70%
Revenue THB 220M ~THB 260M +18%
Timesheet accuracy Low (monthly entry) High (daily entry) N/A
Invoice errors 5–8 times/month <1 time/month -87%
Cash flow gap ~THB 15M <THB 2M -87%
Time to project P&L 60–90 days after closing Real-time -100%
Subcontractor cost tracking Manual, after payment Real-time, per project N/A
Revenue recognition audit issue Flagged for 2 years Clean pass Resolved

Lessons Learned — For Service Businesses Considering ERP

Lesson 1: The problem isn’t “lack of systems” — it’s disconnected data

Before this, CodeVelocity already had “systems” — Excel, Google Drive, accounting software. Each one did its own job reasonably well. The problem was they didn’t talk to each other. ERP is not about having a “better system”; it’s about having one connected system where data flows continuously.

Lesson 2: Choose an ERP that fits your business

Are big-name ERP platforms good? Absolutely. But for a 95-person company, it’s like buying an 18-wheel truck to move 500 kilograms — it works, but it’s not economical. Are cloud subscription ERPs good? Yes. But implementation and maintenance costs can become a heavy burden for a company without an internal IT team.

Odoo is not perfect, and it’s not the best at everything. But for CodeVelocity, it was the right fit — the right fit for size, budget, and operational complexity.

Lesson 3: The implementation partner matters more than the software

Mr. Wichai summarized it this way:

“If you ask whether Odoo is good, I’d say yes. But if you ask why it worked, I’d say it’s because the Enersys team understood service businesses, not just Odoo. I believe the same ERP implemented by different teams would produce completely different results.”

Lesson 4: Don’t implement everything at once

90 days sounds fast, but we didn’t go live with every module at the same time. We started with the core (Project + Timesheet + Accounting) and added modules according to priority. Big-bang go-live is one of the main reasons ERP implementations fail — go step by step, do it well, then move forward.

Lesson 5: Timesheets are the heart of professional services

If there was one thing CodeVelocity got right first, it was timesheets. When timesheets are accurate and submitted on time, everything downstream — project cost, utilization, billing, revenue recognition — becomes more accurate too. Invest in making timesheets easy and habitual for employees, and the return will follow.


For Businesses Facing the Same Problems

If you’re reading this and thinking, “This sounds exactly like our company,” you’re not alone. Most professional services firms, IT consulting companies, engineering service providers, and digital agencies in Thailand are still where CodeVelocity was before ERP.

The difference between “knowing there’s a problem” and “successfully solving it” is having a partner who understands both the technology and your business model.

The Enersys team has experience implementing Odoo for many types of service businesses in Thailand. We understand that professional services are not the same as manufacturing or retail — the pain points are different, so the solution has to be different too.

Ready to talk?

You don’t need to decide anything right now. Start with a 30-minute conversation. Tell us what problems you’re facing, and we’ll help you assess whether Odoo — or another ERP solution — is right for your business.

Contact the Enersys team


References

  1. Mordor Intelligence — Thailand ICT Market (USD 17.74B in 2025, IT Services 32.08%, CAGR 10.95%)
  2. Mordor Intelligence — Thailand Digital Transformation Market (SME segment growing at 14.95% CAGR)
  3. KPC Team — Why 55-75% of ERP Projects Fail
  4. Market Research Future — Southeast Asia ERP Software Market (CAGR 7.20% → $1.50B by 2034)
  5. Odoo S.A. — Official Pricing

"Empowering Innovation,
Transforming Futures."

ติดต่อเราเพื่อทำให้โปรเจกต์ของคุณเป็นจริง