Bitrix24's stock tools cover simple conditions: a robot on a stage fires by a filter, and the Condition block in the workflow designer branches the flow. But logic like "if the amount is above 100,000 and the source is the website, then one thing, otherwise another" turns into a tree of nested forks. Three Roboteka robots reduce such checks to a single action: Compound condition combines up to four checks with AND/OR/NOT, Ternary choice returns one of two values, and Check that a field is filled in answers Y/N about any CRM field.

Why aren't the stock conditions enough?

A robot on a stage can have a start condition, but that's a filter: fire or not, with no complex logic inside. The workflow designer has a Condition block, yet a combination like "(A and B) or (C and D)" can only be assembled with nested forks — two or three branches that are hard to read and change. The main source of errors is duplicated actions across branches: you edit the notification text in one and forget the other. It's easier to evaluate the whole condition in a single action, get a Y/N flag, and keep a single fork in the diagram. For how the processes themselves work, see the overview of Bitrix24 business processes.

How do you combine several checks: AND, OR, NOT?

The Compound condition (AND / OR / NOT) robot accepts, in flat mode, up to four "value A — operator — value B" pairs plus the combining logic: AND — all must hold, OR — one is enough. For arbitrary nesting there is a JSON mode: a "conditions in JSON" field of the form {"and":[{"a":"…","op":"eq","b":"…"},{"or":[…]}]} takes priority over the flat one. There's a single output — "Result (Y/N)". Where to write it: the stock Condition block is usually placed right after the robot with a "result equals Y" check — one fork instead of a tree. If a flat pair has no operator, it's simply skipped, so you don't have to fill in all four rows. Example: before moving a deal to the "Approval" stage, check that the amount is above the threshold and the source is the website; on N the deal goes back to the manager with a notification.

Which operators are available, and why eq instead of ==?

Operators are set as word aliases: eq, neq, gt, lt, gte, lte — equal, not equal, greater than, less than, and the non-strict comparisons; plus contains, not_contains, starts_with, ends_with, is_empty, not_empty, and matches for regular expressions. Don't write the symbolic forms == and > in the robot's fields: the business process engine treats such a value as an expression and evaluates it before the robot even runs — what reaches the check is the result of the evaluation, not the operator. Numbers are compared as numbers: 10 is greater than 9, even though as a string "10" is less. Strings are compared case-insensitively by default — there's a separate flag for case-sensitive comparison. One more Bitrix24 quirk: an unfilled field is substituted with an empty string, not with "nothing", so test for emptiness with the is_empty operator rather than comparing against an empty value.

How do you pick one of two values without branches?

Ternary choice (if-then-else) is an "if — then — else" construct in a single action. Inputs: value A, an operator, value B (not needed for is_empty and not_empty), and two answer options — "return if true" and "return if false". There are two outputs: the chosen value and a "condition met" Y/N flag. The result is written into a deal field, the text of a notification, or a process variable. Example: if the discount is over 20, put the approving manager into the email, otherwise the sales rep. A single robot replaces a fork with two nearly identical actions that would otherwise have to be maintained as a pair. The Y/N flag stays separately available — you can use it to branch the process further without re-evaluating the condition a second time.

How do you check that a field is filled in?

Check that a field is filled in covers the most common special case of a condition. Inputs: the entity type — deal, contact, company, or lead — its ID, and the field code. There are two outputs: a "field is filled in" Y/N flag and the current field value; multiple values are joined with a comma. Example: a lead can't move into work without a phone number; a deal can't go to shipping with an empty "Delivery address" field. The flag is compared in the stock Condition block, and the field value can be dropped straight into a notification to the responsible person — no separate request to the card is needed, the robot has already returned both the fact and the contents.

Bottom line

Several checks at once — Compound condition; a choice between two values — Ternary choice; a filled-in check — Check that a field is filled in. Write the operators in the fields as words: eq, gt, lt. These and the neighbouring logic-control robots are gathered in the process control category. Can't find the one you need? Describe the task — we'll build the robot for free and add it to the shared catalog.