Migration from Cloud Bitrix24 to On-Premise
Moving from a cloud plan to the box version is not simply a matter of changing servers. Cloud and On-Premise are fundamentally different products with different capabilities, APIs, and limitations. Some cloud features are unavailable in the box version; others, conversely, become available. These differences must be understood before migration begins.
What Does Not Transfer Automatically
Bitrix24 does not provide an official tool for a full export from cloud to box. Data is migrated via REST API. Limitations of the cloud REST API:
-
Disk (files and folders) — accessible via
disk.folder.*anddisk.file.*, but speed is limited by API rate limits (no more than 2 requests per second on a free plan, up to 200 on a paid plan) - Chats and feeds — conversation history cannot be exported via REST; only structured CRM entities are accessible
-
Business processes — templates can be exported via
bizproc.workflow.template.list, but they are tied to the specifics of the cloud configuration and require manual adaptation -
Telephony — SIP connection settings, call history; call history is partially accessible via
voximplant.statistic.get
CRM: The Main Data Volume
CRM entities migrate most completely via API. The transfer order is critical:
- Users (
user.get) — created on the box manually or via LDAP - Statuses and pipelines (
crm.status.list,crm.dealcategory.list) — recreated on the box before data is loaded - Custom fields (
crm.userfield.list) — created viacrm.userfield.add - Companies → Contacts → Leads → Deals (in that order, preserving the ID mapping)
- Activities / tasks (
crm.activity.list) - Comments and timeline (
crm.timeline.comment.list)
Example of fetching all deals with pagination:
$start = 0;
$deals = [];
do {
$result = $bitrix24->call('crm.deal.list', [
'select' => ['*', 'UF_*'],
'start' => $start,
]);
$deals = array_merge($deals, $result['result']);
$start = $result['next'] ?? null;
} while ($start !== null);
File Storage
Files from Bitrix24 Disk are downloaded via disk.file.get (to get the download URL) and uploaded to the box via disk.folder.uploadfile. For large volumes (tens of thousands of files), the process takes several days of continuous script execution.
A solution for speeding this up: running multiple processes in parallel, splitting files by folder. However, API rate limits and the connection quota of the source server must be monitored.
Portal Settings and Structure
Unlike data, settings cannot be migrated via API — they must be manually reconfigured:
- Department and position structure
- Access rights (CRM roles, disk permissions, group permissions)
- Integrations with external services (email, telephony, messengers)
- External widgets and marketplace applications
The box version offers capabilities unavailable in the cloud: direct database access, LDAP/Active Directory configuration, custom modules, and full control over the file system. This is the main reason for the transition for companies with non-standard requirements.
Preparing the On-Premise Server
The box version of Bitrix24 requires:
- Linux (CentOS 7+, Ubuntu 18.04+) or Windows Server
- PHP 7.4–8.1 with a set of mandatory extensions
- MySQL 5.7+ / MariaDB 10.3+
- Minimum 4 GB RAM for a small team (up to 50 users), 16+ GB for 200+
For installation, BitrixVM is recommended — a ready-made virtual machine image with a pre-configured stack. This saves 2–4 hours of server setup.
Typical Timelines
| Company scale | CRM data volume | Migration duration |
|---|---|---|
| Small business (up to 20 users) | up to 50,000 CRM records | 1–2 weeks |
| Medium (20–100 users) | 50,000–300,000 records | 3–5 weeks |
| Large (100+ users) | 300,000+ records, large disk | 2–3 months |
After migration, a parallel operation period is mandatory (2–4 weeks) during which the cloud is still accessible and data can be verified. After that — switch over and close the cloud subscription.







