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.







