Setting up work with government orders (44-FZ) via Bitrix24

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
    745
  • 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

Setting Up Government Procurement (44-FZ) Workflows in Bitrix24

A supplier company participates in government procurement under 44-FZ. Tenders are found on the EIS (zakupki.gov.ru), documents are scattered across emails and folders, and contract execution is not tracked in CRM at all. Bitrix24 has no native understanding of 44-FZ, but its CRM, tasks, and documents are a sufficient platform to build a structured government procurement workflow.

CRM Object Structure for Government Orders

Standard Bitrix24 entities are adapted to the specifics of 44-FZ:

Deal = Procurement (tender). Custom fields:

  • UF_CRM_ZAKUPKA_NUMBER — procurement registry number (EIS)
  • UF_CRM_ZAKUPKA_IKZ — procurement identification code
  • UF_CRM_ZAKUPKA_NMCK — initial maximum contract price
  • UF_CRM_ZAKUPKA_TYPE — supplier selection method (open competition, auction, etc.)
  • UF_CRM_ZAKUPKA_DEADLINE — application submission deadline
  • UF_CRM_ZAKUPKA_FZ — list (44-FZ, 223-FZ)
  • UF_CRM_CONTRACT_NUMBER — contract number (after winning)

Contact/Company = Customer (government agency or institution). Details: TIN, KPP, OGRN, treasury account number.

Tender Sales Pipeline

Deal stages for 44-FZ:

Stage Action
Monitoring Procurement found on EIS, preliminary analysis
Analysis Reviewing specs, calculating cost, deciding whether to participate
Application Preparation Compiling documents, submitting
Awaiting Results After the submission deadline
Win / Contract Execution Signing contract through EIS
Contract Fulfillment Delivering goods/services, milestones
Closing Act signed, payment received
Loss Did not win, recording reason

Each stage corresponds to a set of tasks (Bitrix24 task templates).

Creating a Procurement from EIS

Manual EIS monitoring is routine work. Automation is done via parsing or the EIS API (zakupki.gov.ru provides an open API for downloading procurement data in XML).

Parsing EIS XML feeds and creating deals:

class EisFeedParser
{
    private string $feedUrl = 'https://zakupki.gov.ru/epz/order/extendedsearch/rss.html?'
        . 'morphology=on&searchString=&kladrCode=&'
        . 'orderPlacementSmallBusinessSubject=on&'
        . 'fz44=on&okpd2IdsOnly=72.19.99';

    public function parseAndCreateDeals(): void
    {
        $xml = simplexml_load_file($this->feedUrl);

        foreach ($xml->channel->item as $item) {
            $zakupkaNumber = $this->extractNumber((string)$item->link);

            // Check whether this deal was already created
            if ($this->isDealExists($zakupkaNumber)) {
                continue;
            }

            // Create a deal in Bitrix24
            $dealId = \Bitrix\Crm\DealTable::add([
                'TITLE'                  => (string)$item->title,
                'STAGE_ID'               => 'C4:NEW', // First stage of the tender pipeline
                'UF_CRM_ZAKUPKA_NUMBER'  => $zakupkaNumber,
                'UF_CRM_ZAKUPKA_FZ'     => '44-FZ',
                'UF_CRM_ZAKUPKA_DEADLINE' => $this->parseDeadline((string)$item->pubDate),
                'SOURCE_ID'              => 'EIS_FEED',
                'ASSIGNED_BY_ID'         => $this->getResponsibleManager(),
            ])->getId();

            // Attach EIS link as an activity
            \Bitrix\Crm\ActivityTable::add([
                'OWNER_TYPE_ID' => \CCrmOwnerType::Deal,
                'OWNER_ID'      => $dealId,
                'TYPE_ID'       => \CCrmActivityType::URL,
                'SUBJECT'       => 'Procurement on EIS',
                'DESCRIPTION'   => (string)$item->link,
            ]);
        }
    }
}

Automatic Tasks by Stage

When a deal stage changes, template tasks are created via Bitrix24 robots or directly:

AddEventHandler('crm', 'OnCrmDealUpdateItemsForStatus', function(array $data) {
    $deal    = \Bitrix\Crm\DealTable::getById($data['ID'])->fetch();
    $stageId = $deal['STAGE_ID'];

    $taskTemplates = [
        'C4:PREPARATION' => [
            'Prepare technical proposal',
            'Compile application document package',
            'Calculate bid price',
            'Verify digital signature for application submission',
        ],
        'C4:CONTRACT' => [
            'Sign contract through EIS',
            'Register contract in the registry',
            'Arrange bank guarantee (if required)',
        ],
        'C4:EXECUTION' => [
            'Prepare execution schedule',
            'Issue advance payment invoice (if applicable)',
        ],
    ];

    if (isset($taskTemplates[$stageId])) {
        foreach ($taskTemplates[$stageId] as $taskTitle) {
            \CTaskItem::add([
                'TITLE'          => $taskTitle,
                'RESPONSIBLE_ID' => $deal['ASSIGNED_BY_ID'],
                'CREATED_BY'     => 1,
                'DEADLINE'       => $deal['UF_CRM_ZAKUPKA_DEADLINE'],
                'UF_CRM_TASK'    => ['D_' . $data['ID']], // link to deal
            ], 1);
        }
    }
});

Deadline Control

44-FZ strictly regulates deadlines: application submission deadline, contract signing deadline after winning (30 days), and milestone execution deadlines. Violations result in fines and inclusion in the register of unscrupulous suppliers.

An agent runs daily to check deadlines:

// Reminder 3 days before application submission deadline
$urgentDeals = \Bitrix\Crm\DealTable::getList([
    'filter' => [
        'STAGE_ID'                  => 'C4:PREPARATION',
        '<=UF_CRM_ZAKUPKA_DEADLINE' => date('Y-m-d', strtotime('+3 days')),
    ],
    'select' => ['ID', 'TITLE', 'ASSIGNED_BY_ID', 'UF_CRM_ZAKUPKA_DEADLINE'],
]);

Contract Documents

44-FZ document templates (quotation requests, commercial proposals, execution documentation) are stored in Bitrix24 CRM under "Deal Documents". Generation from a template with customer details and deal data is handled via Bitrix24 smart documents or a custom DOCX generator.

Scope of Work

  • Creating a tender sales pipeline with custom stages
  • Custom CRM fields for procurement details
  • EIS feed parser or EIS API integration
  • Automatic tasks by stage via robots
  • Deadline control agent
  • Document templates

Timeline: 2–4 weeks for basic CRM and pipeline setup. 6–10 weeks with automatic EIS parsing and full document management.