Setting up Bitrix24 On-Premise updates

Our company is engaged in the development, support and maintenance of Bitrix and Bitrix24 solutions of any complexity. From simple one-page sites to complex online stores, CRM systems with 1C and telephony integration. The experience of developers is confirmed by certificates from the vendor.
Our competencies:
Development stages
Latest works
  • image_website-b2b-advance_0.png
    B2B ADVANCE company website development
    1175
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Website development for FIXPER company
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Development based on Bitrix, Bitrix24, 1C for the company Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Development based on 1C Enterprise for MIRSANBEL
    747
  • image_crm_dolbimby_434_0.webp
    Website development on CRM Bitrix24 for DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    976

Configuring Bitrix24 On-Premise Updates

Updating boxed Bitrix24 is not a "click Update and you're done" button. Without preparation, an update can break custom modifications, disrupt module functionality, or take several hours on a production server. The process needs to be structured as a procedure.

How the Update System Works

Bitrix24 On-Premise receives updates via "Marketplace" and built-in updater. The update system component is /bitrix/updates/. When run, it checks for available patches on the update server dev.1c-bitrix.ru, downloads packages, and applies changes to files and database.

Updates are of two types:

  • Patch — point fix, affects individual files
  • Release — major update with database structure changes (b_* tables)

Releases are riskier: they contain database migrations via \Bitrix\Main\Application::getConnection()->queryExecute(). If custom code uses non-standard fields in system tables, migration can corrupt data.

Configuring Auto Updates

In /bitrix/admin/update_system_partner.php you can enable automatic update retrieval and application on schedule. This is convenient, but risky for production without testing.

Sensible strategy: auto-updates are enabled only for security patches (SECURITY = Y). Major updates — only manually after staging testing.

Configuration via agent in b_agent:

// Agent checks for updates every 24 hours
CAgent::AddAgent(
    "CUpdateClient::CheckUpdates();",
    "main",
    "N",
    86400,
    "",
    "Y"
);

Production Update Procedure

Step 1: Backup. Before any update — backup files and database. Built-in backup module (/bitrix/admin/backup.php) or mysqldump + tar:

mysqldump -u bitrix -p bitrix24_db > /backup/bitrix24_$(date +%Y%m%d_%H%M).sql
tar czf /backup/bitrix24_files_$(date +%Y%m%d_%H%M).tar.gz /var/www/html --exclude=/var/www/html/upload

Step 2: Test on staging. If you have a staging server (and you should) — apply the update there, run functional testing. Check:

  • Custom components in /local/components/
  • Custom handlers in /local/php_interface/init.php
  • Modules in /local/modules/
  • Integrations with external systems (1C, CRM)

Step 3: Maintenance mode. Before production update — maintenance mode. In Bitrix this is done via /bitrix/.maintenance.php:

<?php
// /bitrix/.maintenance.php
header('HTTP/1.1 503 Service Unavailable');
header('Retry-After: 3600');
include '/path/to/maintenance_page.html';
exit;

And in nginx intercept all requests and show the maintenance page.

Step 4: Apply update. Via /bitrix/admin/update_system.php or via console update handler (BitrixVM has bitrix-env).

Step 5: Post-update verification. List of critical pages: home, catalog, product card, cart, checkout, personal account, admin panel. Check php-fpm and nginx logs for new errors.

Updating Custom Modules from Marketplace

Marketplace modules update separately from the core. In /bitrix/admin/partner_modules.php is the list of installed modules with available updates. Before updating a third-party module — read the changelog: some modules reset settings on update.

Custom modules in /local/modules/ are outside the Marketplace update zone — update manually or via your CI/CD.

Version Control for Custom Code

The main problem when updating: developers often modify Bitrix core files (/bitrix/modules/) instead of using /local/. When the core updates, such changes get overwritten.

Check before updating: are there modified files in /bitrix/ (not in /local/). With Git this is simple: if /bitrix/ is under version control, git diff shows changes. If not — compare file hashes with the reference distribution.

Best practice: all custom code — only in /local/. Then core update is safe.