Field report: inherited agency hosting migration
Portfolio transfer and hosting consolidation undertaken for Tambourine Consulting as the agency reduced its staffed web operation. The assignment covered the assumption of ongoing web-design contracts, technical custody and production hosting for more than 150 client websites.
Assignment record
| TRANSFEROR | Tambourine Consulting |
|---|---|
| RECEIVING SUPPLIER | Half Assed Web Design |
| PORTFOLIO | 154 active client websites and associated support obligations |
| PLATFORMS | Linux and Windows shared hosting / dedicated virtual machines / static estates |
| PROGRAMME | February to December 2015 |
| EXCEPTION | 360 TB overseas image-hosting service / peak throughput approximately 3 Gbps |
06 February — Initial agency contact
Tambourine Consulting approached Half Assed Web Design while restructuring its staffed operations. The agency intended to retain its consultancy and account relationships but withdraw from routine website production, application maintenance and server administration. It required a delivery partner able to receive new design instructions while assuming responsibility for the existing client estate.
The initial schedule described approximately 150 mostly small and medium-sized business websites. Services ranged from brochure-site amendments and domain renewals to CMS maintenance, application support and production hosting. Tambourine would remain the contractual client contact during transition, with technical work passed to Half Assed under an agency services agreement.
20 February — Portfolio discovery
A discovery export identified 154 active hostnames across 131 customer accounts. Documentation consisted of a billing spreadsheet, control-panel exports, registrar records and an archive of project folders. Several domains resolved to systems that were absent from the server inventory, while some listed hosting accounts no longer had a corresponding live site.
The estate reflected nearly a decade of agency delivery. Static HTML sites shared space with WordPress, Drupal, Joomla and Magento installations. Custom PHP applications ranged from PHP 5.2 to 5.5 and used both MySQL and flat-file storage. Four ASP.NET applications remained on Windows Server 2008 R2 with IIS 7.5 and SQL Server Express. A small number of sites depended on Perl CGI, ImageMagick command-line calls or scheduled FTP imports from client systems.
| MIGRATION GROUP | APPROX. COUNT | TARGET |
|---|---|---|
| STATIC / CLASSIC HTML | 39 | Nginx shared platform |
| PHP 5.2–5.3 LEGACY | 31 | Isolated Apache compatibility hosts |
| PHP 5.4–5.5 CMS | 62 | Ubuntu 14.04 LTS / Apache / MySQL 5.5 |
| MAGENTO / HIGHER RESOURCE | 12 | Dedicated Linux virtual machines |
| ASP.NET / IIS | 4 | Windows Server 2008 R2 virtual machines |
| BESPOKE OR EXTERNAL | 6 | Individual review |
13 March — Contract and transfer controls
The parties signed an agency services and portfolio-transfer agreement. It assigned ongoing design and technical requests to Half Assed and required the receiving supplier to host the client websites listed in the transfer material. Charges were based on site bands derived from the discovery spreadsheet, with separate rates for ordinary shared sites, application virtual machines and material project work.
The agreement referred to the estate as transferred in its current configuration and included responsibility for reasonable compatibility work needed to operate it on the receiving platforms. It did not state a total storage ceiling, bandwidth ceiling or geographical restriction. The attached site list contained hostnames and customer references but no verified resource figures.
A transition register was established for credentials, domain control, DNS, certificates, source code, databases, scheduled jobs, mail dependencies, analytics and client contacts. No site would change DNS until a copy had passed functional checks and Tambourine had approved the preview address.
02 April — Receiving-platform build
The consolidated Linux estate used separate virtual machines for current CMS workloads, legacy PHP and resource-intensive commerce. Ubuntu Server 14.04 LTS hosted the principal Apache and MySQL 5.5 group; Debian 7 compatibility machines retained older interpreter versions behind a restricted reverse proxy. CentOS 6 was used where vendor modules had been compiled for its package base.
Windows applications moved to two Windows Server 2008 R2 virtual machines with application pools separated by client. Static assets were presented through Nginx, and common monitoring checked HTTP status, certificate validity, disk use and database service. Nightly local snapshots were supplemented by encrypted offsite file and database copies.
Accounts were separated by Unix user, database credential and virtual-host configuration. Shared writable folders were narrowed to application requirements. The arrangement did not modernise every inherited application, but it prevented one site from depending on another site’s directory structure or global configuration.
27 April — Compatibility programme
Sites were grouped by runtime rather than moved alphabetically. This allowed the team to establish one tested migration pattern for each stack and apply it repeatedly. Files were transferred with timestamps and permissions preserved, followed by a database dump taken immediately before preview generation.
Minor code changes replaced hard-coded absolute paths, removed dependencies on Tambourine server names and moved database credentials into per-site configuration files. Calls to deprecated MySQL functions remained on the legacy group rather than being rewritten during transfer. Several mail forms were changed to submit through an authenticated relay because the new hosts did not permit direct unauthenticated delivery.
Each preview was checked for navigation, forms, administrative login, file upload, search, scheduled jobs and representative database records. DNS time-to-live values were lowered before the agreed change, and the source account was retained in a read-only or standby state for at least seven days afterwards.
May to October — Main portfolio migration
The transfer proceeded in weekly batches of between six and fourteen sites. Static and current WordPress sites moved first, followed by commerce, legacy CMS and Windows applications. Tambourine supplied client-specific knowledge where undocumented modules or payment-provider restrictions appeared.
Several expected irregularities were resolved without changing the programme. One Drupal site used a local Solr instance that had not appeared in the inventory. A stock application depended on an inbound CSV file written to a fixed IP address. Two ecommerce sites had certificate chains embedded in payment callbacks, and one brochure site generated every page from a Microsoft Access database uploaded by FTP each night.
By the end of October, 149 websites had moved to the receiving estate. Production checks, mail flow and scheduled tasks were stable. Four further bespoke sites had approved migration plans and presented no exceptional capacity requirement. Support contacts were entering the new workflow, and the old shared servers were scheduled for staged retirement.
149 websites were operating from Half Assed infrastructure, four were in final preparation and one remained recorded only as an externally hosted image website. No critical incident or client-visible data loss had occurred during the transfer.
03 November — Final external service review
The remaining website appeared in the inventory as a bespoke image library with external hosting. Its resource column contained “360” and its traffic field contained “3”, without units. The commercial band assigned in the signed schedule was equivalent to an ordinary dedicated application server.
Credentials supplied for the service did not correspond to a conventional control panel. They opened a management gateway for a specially commissioned storage platform in a Kenyan datacentre. The public application distributed user-submitted and historical image collections through several front-end nodes, while a private storage network presented the underlying archive.
The platform held approximately 360 terabytes of active data. Traffic graphs showed ordinary sustained delivery in the hundreds of megabits per second and repeated daily peaks near 3 Gbps. New uploads continued throughout the day, and the service maintained its own thumbnail, deduplication and metadata queues.
05 November — Technical assessment
The service could not be absorbed into any platform built for the transferred portfolio. Its stored data exceeded the rest of the estate by several orders of magnitude, and its peak throughput was greater than the combined internet capacity allocated to the receiving environment.
The Kenyan system consisted of dense storage shelves, application servers, replicated metadata databases and locally terminated transit. It had been commissioned there because bandwidth charges were materially below the comparable UK quotation available at the time. Tambourine also advised that the jurisdiction offered a favourable legal environment for the service’s mixture of user uploads and semi-legal historical collections whose ownership and redistribution permissions were not consistently established.
A reliable transfer required an initial bulk copy, a continuing change feed, metadata reconciliation, checksum validation and a controlled final cutover. At a sustained 1 Gbps, moving 360 TB alone would require more than a month before protocol overhead, retransmission or concurrent production changes. Building an equivalent target in the United Kingdom required new storage, switching, transit, rack space and a content-liability review.
09 November — Commercial exception raised
Half Assed notified Tambourine that the image platform was outside the assumptions used to price and design the agency transfer. It proposed treating the service as a separately scoped managed-infrastructure engagement, leaving it in Kenya while ownership, content exposure, support access and replacement costs were investigated.
The notice stated that the phrase “reasonable compatibility work” could not include acquisition of hundreds of terabytes of storage or several gigabits of continuous network capacity. It also argued that the transfer schedule had omitted the units necessary to disclose the scale and had classified the platform within a standard server band.
Tambourine replied that the contract covered every hostname on the signed schedule, accepted the estate in its current configuration and did not contain an exclusion for large sites or overseas infrastructure. Its position was that resource validation had been available during discovery and that Half Assed had signed after receiving management access details.
12 November — Contract meeting
A remote contract meeting did not produce agreement. Half Assed maintained that no reasonable supplier would interpret an unqualified “360” as 360 TB when every other storage entry was expressed in gigabytes. Tambourine maintained that the technical due-diligence period had been provided specifically to resolve such ambiguities.
The parties also disagreed about ongoing liability. Tambourine considered the service transferred from the effective date of the agreement even though credentials, billing and datacentre communications remained in its name. Half Assed considered custody incomplete because it had neither accepted the overseas supplier terms nor established that it could lawfully control the stored material.
Both sides reserved their contractual positions. The Kenyan platform remained operational under its existing configuration while senior representatives arranged an in-person meeting.
27 November, 14:00 — In-person escalation
The meeting took place at Tambourine Consulting’s offices. Tambourine was represented by its chief executive and two engineers familiar with the image platform. Half Assed attended through its chief executive and two engineers responsible for the receiving estate.
The engineers first reviewed storage graphs, transit invoices, architecture diagrams and the migration worksheet. They agreed on the technical facts: approximately 360 TB was live, the 3 Gbps figure represented observed peak outbound traffic, production writes could not simply be suspended, and the service had no tested secondary copy suitable for relocation.
Agreement on the facts intensified rather than resolved the contractual discussion. Half Assed stated that the service changed the financial character of the entire contract and that accepting it at the standard rate would be commercially impossible. Tambourine stated that its decision to downsize had been made in reliance on the signed transfer and that excluding the most difficult system after accepting the remainder was unacceptable.
16:40 — Meeting adjourned
After repeated discussion of the same contract clauses, both chief executives agreed to stop the formal meeting. No variation, termination or temporary cost allocation was signed. To lower the temperature and preserve the wider working relationship, the attendees agreed to continue the conversation informally over a beer at a nearby public house.
The technical estate was left unchanged. Tambourine’s engineers retained operational contact with the Kenyan datacentre, while Half Assed continued monitoring the 149 sites already transferred. The remaining four ordinary migrations were paused pending confirmation that the overall agreement remained in force.
18:15 — Informal discussion
Initial conversation at the public house returned to the possible technical options: continued Kenyan colocation, a managed transfer to another low-cost region, a client-funded UK build or separation of the image service from the portfolio agreement. None resolved the disagreement over who would bear the immediate cost and historic liability.
As the discussion continued, the participants moved from the platform itself to the quality of the original disclosure, due diligence performed by each engineering group and statements made during contract negotiation. The CEOs exchanged increasingly direct allegations concerning responsibility for the omitted resource units. Engineers from both sides intervened in support of their respective project records.
The venue asked the group to conclude the discussion. All six attendees left through the main entrance and continued arguing in the pub car park.
19:04 — Physical altercation
In the car park, an argument between the two chief executives became a physical confrontation. Attempts by the engineers to separate them developed into pushing between the two groups, followed by a fist fight involving representatives from both companies.
The altercation was brief but sufficiently visible for venue staff and members of the public to contact police. No computer equipment, client media or production credentials were present. Minor injuries were reported by several participants, and one shirt, a pair of glasses and the printed infrastructure diagram were damaged.
The groups separated before officers arrived. Production service remained unaffected throughout.
19:16 — Police attendance
Police officers attended the car park, separated the remaining participants and took names and initial accounts. The venue confirmed that the group had been asked to leave following a commercial argument. Ambulance attendance was offered but was not required by those present.
Officers advised that arrests were being considered while the circumstances and willingness of the parties to make allegations were established. After an extended discussion, no participant requested an immediate complaint, all parties agreed to leave separately and no further disorder occurred. The group therefore narrowly avoided arrest and departed under instruction not to resume contact that evening.
30 November — Governance response
Direct project communication between the companies was suspended. Access to transferred systems was reviewed to confirm that no credentials had been withdrawn or changed during the dispute. Monitoring showed all migrated client sites operating normally, and the Kenyan platform remained online under the existing Tambourine-controlled service arrangement.
Each company prepared a chronology covering discovery, disclosure, contract drafting, site classification, technical access and the November meetings. Copies of the signed schedule, resource spreadsheet, invoices, management graphs and correspondence were preserved. Staff involved in the physical incident submitted separate factual accounts.
Neither company accepted responsibility for the contractual failure or the altercation. Informal resolution was discontinued.
Final contractual position
The matter was referred to a specialist contract law firm for advice on construction of the transfer schedule, the meaning of current-configuration acceptance, adequacy of disclosure, responsibility for due diligence and the availability of variation, exclusion or termination remedies. Further technical work on the exceptional service required written authority from the legal representatives.
The 149 completed website migrations remained with Half Assed pending the outcome. Four ordinary sites were held at their existing hosts. The 360 TB image platform remained in the specially commissioned Kenyan facility, continued serving traffic and had not entered the Half Assed production estate.
No agreed migration design, revised price or final allocation of hosting responsibility was reached. The portfolio contract, the image-hosting service and the consequences of the car-park meeting were left unresolved in the hands of the appointed contract lawyers.
Standard portfolio migration: substantially complete. Exceptional image platform: not transferred. Commercial responsibility: disputed. Inter-company contact: restricted to legal representatives. Police outcome: no arrest at the scene. Contract status: unresolved.