London
Account created on 26 March 2013, over 11 years ago
#

Merge Requests

Recent comments

🇬🇧United Kingdom lexsoft London

lexsoft changed the visibility of the branch 3469697-eca-form-breaks to hidden.

🇬🇧United Kingdom lexsoft London

@jurgenhaas

Upgrading ECA from version 1.x to 2.x on Drupal 10.3.7 generates a warning related to the use of eca_form alongside inline_entity_form 3.x when initializing content entities using the complex widget with AJAX. The warning message displayed is:

“An error occurred while trying to build an inline entity from submitted form values. This might be a problem if you are using ECA to extend inline entity forms. Please report this to the ECA issue queue to help us improve it.”

Upon investigation, it appears that the condition in the code checks for:

if ($form['#eca_ief_info']['widget_plugin_id'] !== 'inline_entity_form_complex') {

However, in our case, we are using the IEF Table View Mode module https://www.drupal.org/project/ief_table_view_mode . I would like to suggest modifying this condition to use a regular expression that matches inline_entity_form_complex, which would also account for custom plugins. This change could help ensure broader compatibility.

🇬🇧United Kingdom lexsoft London

Steps to replicate:
On a standard Drupal 10.1.8 installation
Add a Content Reference Field to the Article Bundle:
In the Article bundle, add a new content reference field that points to the Basic Page bundle.
Set the 'Manage Form Display' for this field to 'Inline Entity Form - Simple'.

Update the Basic Page Bundle:
Add a boolean field named 'field_boolean_test' to the Basic Page.
Ensure the body field on the Basic Page is set to be required.

Configure Conditional Fields on the Basic Page:
Implement a conditional field setting where the 'body' field's visibility is controlled by 'field_boolean_test'.
Set the condition to make the body field visible only when 'field_boolean_test' is checked.

Expected Behavior on the Article Creation Page:

You will see an inline entity form for a Basic Page embedded within the Article form. This form will include the checkbox ('field_boolean_test') and the required 'body' field.
When the checkbox is toggled, the 'body' field should hide or display based on the checkbox status.

Encountered Issue:

If the checkbox is checked (hiding the body field), attempting to save the Article triggers a validation error due to the required status of the 'body' field. This only happens via inline entity form, if the same process is replicated on the Basic Page add it functions as it should.

🇬🇧United Kingdom lexsoft London

@ joaopauloc.dev,

The patch does not work when used with inline_entity_form. If required field is hidden in inline_entity_form simple by conditional fields it would show up in form validation errors. Any advice on how to get it to work?

Thanks in advance.

🇬🇧United Kingdom lexsoft London

@jurgenhaas I've created a new module https://www.drupal.org/project/eca_entity_print and added you as a maintainer. I've pushed the first initial code that includes the actions. Feel free to make any changes needed for a stable release and let me know how I can help.

🇬🇧United Kingdom lexsoft London

@niral098 if you have any improvements that you've done on your local, please share them with us in the form of patch. Any help no matter how small it's appreciated.

I've been held up with other work, hopefully will come back to this soon.

🇬🇧United Kingdom lexsoft London

Hi @jurgenhaas, sounds good.
I can create one, can I add you as a maintainer as well?

🇬🇧United Kingdom lexsoft London

I have encountered the same issue on Drupal v10.1.8 with basic_auth. Resetting the user's password after the update fixed the issue for me. Happened after updating core from 10.0.x to 10.1.x.

Error: Undefined constant "Drupal\Core\Entity\SAVED_UPDATED" in Drupal\Core\Entity\ContentEntityStorageBase->doSave() (line 703 of my_website_stage_5.0/docroot/core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php) 
#0 my_website_stage_5.0/docroot/core/lib/Drupal/Core/Entity/EntityStorageBase.php(486): Drupal\Core\Entity\ContentEntityStorageBase->doSave()
#1 my_website_stage_5.0/docroot/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php(806): Drupal\Core\Entity\EntityStorageBase->save()
#2 my_website_stage_5.0/docroot/core/lib/Drupal/Core/Entity/EntityBase.php(339): Drupal\Core\Entity\Sql\SqlContentEntityStorage->save()
#3 my_website_stage_5.0/docroot/core/modules/user/src/UserAuth.php(57): Drupal\Core\Entity\EntityBase->save()
#4 my_website_stage_5.0/docroot/core/modules/basic_auth/src/Authentication/Provider/BasicAuth.php(110): Drupal\user\UserAuth->authenticate()
#5 my_website_stage_5.0/docroot/modules/contrib/shield/src/ShieldMiddleware.php(343): Drupal\basic_auth\Authentication\Provider\BasicAuth->authenticate()
#6 my_website_stage_5.0/docroot/modules/contrib/shield/src/ShieldMiddleware.php(263): Drupal\shield\ShieldMiddleware->basicAuthRequestAuthenticate()
#7 my_website_stage_5.0/docroot/modules/contrib/shield/src/ShieldMiddleware.php(137): Drupal\shield\ShieldMiddleware->bypass()
#8 my_website_stage_5.0/docroot/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(48): Drupal\shield\ShieldMiddleware->handle()
#9 my_website_stage_5.0/docroot/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(51): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle()
#10 my_website_stage_5.0/docroot/core/lib/Drupal/Core/StackMiddleware/StackedHttpKernel.php(51): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle()
#11 my_website_stage_5.0/docroot/core/lib/Drupal/Core/DrupalKernel.php(704): Drupal\Core\StackMiddleware\StackedHttpKernel->handle()
#12 my_website_stage_5.0/docroot/index.php(19): Drupal\Core\DrupalKernel->handle()
🇬🇧United Kingdom lexsoft London

@smulvih2 thanks a lot! You're post fixed my issue. Changing the user's password worked. I post the error bellow in case somebody else is having issues.

Error: Undefined constant "Drupal\Core\Entity\SAVED_UPDATED" in Drupal\Core\Entity\ContentEntityStorageBase->doSave() (line 703 of my_website_stage_5.0/docroot/core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php) 
#0 my_website_stage_5.0/docroot/core/lib/Drupal/Core/Entity/EntityStorageBase.php(486): Drupal\Core\Entity\ContentEntityStorageBase->doSave()
#1 my_website_stage_5.0/docroot/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php(806): Drupal\Core\Entity\EntityStorageBase->save()
#2 my_website_stage_5.0/docroot/core/lib/Drupal/Core/Entity/EntityBase.php(339): Drupal\Core\Entity\Sql\SqlContentEntityStorage->save()
#3 my_website_stage_5.0/docroot/core/modules/user/src/UserAuth.php(57): Drupal\Core\Entity\EntityBase->save()
#4 my_website_stage_5.0/docroot/core/modules/basic_auth/src/Authentication/Provider/BasicAuth.php(110): Drupal\user\UserAuth->authenticate()
#5 my_website_stage_5.0/docroot/modules/contrib/shield/src/ShieldMiddleware.php(343): Drupal\basic_auth\Authentication\Provider\BasicAuth->authenticate()
#6 my_website_stage_5.0/docroot/modules/contrib/shield/src/ShieldMiddleware.php(263): Drupal\shield\ShieldMiddleware->basicAuthRequestAuthenticate()
#7 my_website_stage_5.0/docroot/modules/contrib/shield/src/ShieldMiddleware.php(137): Drupal\shield\ShieldMiddleware->bypass()
#8 my_website_stage_5.0/docroot/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(48): Drupal\shield\ShieldMiddleware->handle()
#9 my_website_stage_5.0/docroot/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(51): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle()
#10 my_website_stage_5.0/docroot/core/lib/Drupal/Core/StackMiddleware/StackedHttpKernel.php(51): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle()
#11 my_website_stage_5.0/docroot/core/lib/Drupal/Core/DrupalKernel.php(704): Drupal\Core\StackMiddleware\StackedHttpKernel->handle()
#12 my_website_stage_5.0/docroot/index.php(19): Drupal\Core\DrupalKernel->handle()
🇬🇧United Kingdom lexsoft London

Could someone please let me know how to disable this feature? From what I see, it does not have any UI control, and it's unreasonable to deploy something like this enabled.

Wouldn't the best practice be to deploy it disabled initially, with a checkbox on the field config to enable it? If we have multiple fields with, let's say, 5 entries already displayed, with data present but not visible to the user, giving them the ability to remove it could lead to serious issues.

🇬🇧United Kingdom lexsoft London

@alexandrepoinas this ECA action only saves it as a file and should be visibile if you visit /admin/content/files but also the file it's available as a token you set in the ECA action. You could then use the file object token in other ECA actions and maybe attach this to an email if an ECA action is build for that.

🇬🇧United Kingdom lexsoft London

@rcodina fantastic work! Going to test this the following week.

🇬🇧United Kingdom lexsoft London

lexsoft changed the visibility of the branch 3416511-improve-design to active.

🇬🇧United Kingdom lexsoft London

lexsoft changed the visibility of the branch 3416511-improve-design to hidden.

🇬🇧United Kingdom lexsoft London

@rcodina,

The MR15 includes all of this:

"drupal/business_rules": {
                "Issue #3239152: Drupal 9 - Deprecated code": "https://www.drupal.org/files/issues/2021-10-29/deprecated-entity-query-3239152-4.patch",
                "Issue #3200711: cannot add an action to a condition": "https://www.drupal.org/files/issues/2021-05-15/cannot_add_action-3200711-29.patch",
                "Issue #3123554: Execution of scheduled tasks is completely broken": "https://www.drupal.org/files/issues/2021-08-13/business_rules-schedule_task_execution_broken-3123554-11.patch",
                "Issue #3056302: Variables placed in email body not being replaced with actual value": "https://www.drupal.org/files/issues/2020-01-21/collect_variables-3056302-11.patch",
                "Issue #3087989: Duplicate condition": "https://www.drupal.org/files/issues/2020-02-06/duplicate-condition-3087989-3.patch",
                "Issue #3250592: Class RedirectResponse not found": "https://www.drupal.org/files/issues/2021-11-22/3250592-class-redirect-response-missing.patch",
                "Issue #3202890: Notice: Trying to access array offset on value of type null": "https://www.drupal.org/files/issues/2022-04-06/send-email-action-access-array-offset-on-value-of-type-null-3202890-3.patch",
                "Issue #3027292: HTML format mails showing markup tags": "https://www.drupal.org/files/issues/2022-04-06/html-format-mails-3027292-19.patch",
                "Issue #3095392: Set multiple fields values": "https://www.drupal.org/files/issues/2022-04-11/set-multiple-fields-value-action-3095392-11.patch",
                "Issue #3067571: Variable evaluation is skipped when multiple events are processed within a single request": "https://www.drupal.org/files/issues/2022-04-12/business_rules-variables_evaluation_skipped-3067571-13.patch",
                "Issue #3257814: implode() Error": "https://www.drupal.org/files/issues/2022-01-21/implode-error-3257814-5.patch",
                "Issue #3274409: Show a system message action is not rendred": "https://www.drupal.org/files/issues/2022-04-11/show-a-system-message-action-is-not-rendred-3274409-2.patch",
                "Issue #3135986: Only build matrix for flowchart when needed": "https://www.drupal.org/files/issues/2020-05-12/business_rules-lazy-matrix-3135986-2.patch",
                "Issue #3277915: Exception with flowchart on condition when used with commerce_br module": "https://www.drupal.org/files/issues/2022-05-04/exception-flowchart-matrix-position-not-empty-3277915-3.patch",
                "Issue #3283637: You have requested a non-existent service business_rules.processor": "https://www.drupal.org/files/issues/2022-06-01/requested-non-existent-service-business-rules-processor-3283637-2.patch",
                "Issue #3314230: PHP 8.1": "https://www.drupal.org/files/issues/2022-10-07/business_rules-php81_deprecation_error-3314230-2.patch",
                "Issue #3298781: PHP 8.1": "https://git.drupalcode.org/project/business_rules/-/merge_requests/9.diff",
                "Issue #3389853: Drupal 10 Compatible": "https://www.drupal.org/files/issues/2023-10-16/Drupal10_Compatible_business_rules-3389853.patch",
                "Local Patch: resolve all D10/PHP 8.1 deprecation errors": "patches/business_rules-php_8.1_deprecaation_errors.patch"
            },
🇬🇧United Kingdom lexsoft London

We have been utilizing the 2.x releases for quite some time, and our transition from 2.x to 1.x hinges on two critical features that the 2.x version provides:
1. Auto-open inline entity forms (especially for cardinality: 1) Needs work : being the main reason for the switch
2. Simple Widget - allow_new setting Fixed

Furthermore, it has come to our attention that if additional submit buttons are introduced for the node, it becomes necessary to reinstate the inline_entity_form triggers. Here's an example of how to achieve this:

if (\Drupal::moduleHandler()->moduleExists('inline_entity_form')) {
  array_unshift($form['actions']['save_edit']['#submit'],
    ['Drupal\inline_entity_form\ElementSubmit', 'trigger']);
  $form['actions']['save_edit']['#ief_submit_trigger'] = TRUE;
  $form['actions']['save_edit']['#ief_submit_trigger_all'] = TRUE;
}
🇬🇧United Kingdom lexsoft London

@hansrossel

+1 Thanks for sharing.

🇬🇧United Kingdom lexsoft London

@apaderno

I've tested the patch on a production application using business_rules at it's core with no issues so far.

🇬🇧United Kingdom lexsoft London

You've stolen my thunder and that's not the complete solution :(

🇬🇧United Kingdom lexsoft London

Added a new merge request at 🌱 Business Rules 2.0.0-beta2 release plan D10 compatible Needs work

It contains all patches we have used in production for years plus the D10 upgrade.

🇬🇧United Kingdom lexsoft London

lexsoft made their first commit to this issue’s fork.

🇬🇧United Kingdom lexsoft London

+1 for this, would also like to have the support for diff module for revisions.

🇬🇧United Kingdom lexsoft London

ksort might be worth a try.

I have added tests for Boolean fields.

🇬🇧United Kingdom lexsoft London

I can confirm it works for booleans and entity references using inline entity form.

There is a weird thing where on a text editor the array is inverted, I wonder if we need to count for that as well.

🇬🇧United Kingdom lexsoft London

Managed to import them manually with:
drush migrate:import d7_node:product

🇬🇧United Kingdom lexsoft London

I'm sorry if I made things more confusing, I have not mastered yet ECA.
Getting this condition to work with Booleans and inline entity forms will probably fix all my problems.

🇬🇧United Kingdom lexsoft London

I'd say, we should maybe switch to the other approach to check the field type and do special treatment for booleans and entity references.

That's sound great to me. I can help with testing when it's done.

You mean like comparing 2 given entity revisions? That sounds useful and that condition could be implemented as a sub-class of this one.

Essentially I would like to check if the entity I'm saving (current or loaded via reference) has a revision and if it does has the value of the field changed compared to what it's saved in latest revision prior to the one created on save.

My scenario is really simple.
I have a node form that clients need to complete.
After they complete the form a supervisor is notified, reviews the form and flags changes needed on the form.
Finally here is where I need the condition to check if changes to the specified fields are made, if so I need to notify the supervisor again and the process repeats until done.

🇬🇧United Kingdom lexsoft London

It might be useful to have 2 more conditions to maybe get data from revisions rather then original.
1. Check if revisions exists for entity
2. Check field value changed from revision

What do you think?

🇬🇧United Kingdom lexsoft London

Also when used on entity reference the array is different as well:

🇬🇧United Kingdom lexsoft London

I'm thinking maybe just a checkbox to enable/disable strict data types.
Will provide an example shortly.

🇬🇧United Kingdom lexsoft London

Can we just change the condition to not check data types, I think in the majority of cases people would want to see if the content has changed rather then data type.
$changed = $property->getValue() != $original_property->getValue()

And maybe add another condition where we also check for data types? Something like field value changed strict.

🇬🇧United Kingdom lexsoft London

Hi @jurgenhaas,

I've just done a dpm on the values to debug why it's always triggered.
dpm($property->getValue());
dpm($original_property->getValue());

The test was done on a clean install of Drupal 9.5.9.
Also, I've noticed that we don't have $entity->original when working with entity reference in inline_entity_form. Is there a way around this?

🇬🇧United Kingdom lexsoft London

Updating the module gives me a:
Entity/field definitions Mismatched entity and/or field definitions
The following changes were detected in the entity type and field definitions.
Recently read
The Status field needs to be installed.

🇬🇧United Kingdom lexsoft London

Hi @Tanuja,

What you are seeing is client side validation.
You probably need to add this module: https://www.drupal.org/project/disable_html5_validation or add novalidate attribute to the node form.

🇬🇧United Kingdom lexsoft London

lexsoft created an issue.

🇬🇧United Kingdom lexsoft London

The latest dev version does not fixes this issue. Applying the patch does for image medias but not for video files possible same for documents.

🇬🇧United Kingdom lexsoft London

+1, this fixes the issue for sending emails to multiple recipients.

🇬🇧United Kingdom lexsoft London

Hi @emptyvoid

I've opened a new 3.0.x branch https://git.drupalcode.org/project/ckeditor_bootstrap_grid/-/tree/3.0.x?... where I forked https://www.npmjs.com/package/@adnan-haider/two-layout-grid and made it work for Drupal CKeditor5.

I've done some experimentation on it but at very early stages.

To work on it you will need to install the node_modules and do a npm run build everytime you have a change.
I also recommend installing https://www.drupal.org/project/ckeditor5_dev and having a look at their ckeditor5_plugin_starter_template.

Hopefully we can get a alpha release soon.

Thank you

🇬🇧United Kingdom lexsoft London

Hi @leymannx,

My apologies, I thought I tagged everybody in Issue #3296743 by Project Update Bot, Chandra Gowsalya Kannan, Svitlana, leymannx, who am I missing?

🇬🇧United Kingdom lexsoft London

@mxh I have tried to extend the test Drupal\Tests\eca_content\Kernel\LoadEntityRefTest but I'm running into:

Testing Drupal\Tests\eca_content\Kernel\LoadEntityRefTest
E                                                                   1 / 1 (100%)

Time: 00:01.036, Memory: 4.00 MB

There was 1 error:

1) Drupal\Tests\eca_content\Kernel\LoadEntityRefTest::testLoadEntityRef
InvalidArgumentException: Field [node:field_node_ref_mn] does not exist for entity type node/article.

/var/www/html/web/modules/contrib/eca/modules/content/src/Plugin/Action/LoadEntityRef.php:61
/var/www/html/web/modules/contrib/eca/modules/content/src/Plugin/Action/LoadEntity.php:76
/var/www/html/web/modules/contrib/eca/modules/content/tests/src/Kernel/LoadEntityRefTest.php:220
/var/www/html/vendor/phpunit/phpunit/src/Framework/TestResult.php:728

ERRORS!
Tests: 1, Assertions: 12, Errors: 1.

Not sure what I've done wrong but here is my try:

public function testLoadEntityRef() {
    // Create the Article content type with revisioning and translation enabled.
    /** @var \Drupal\node\NodeTypeInterface $node_type */
    $node_type = NodeType::create([
      'type' => 'article',
      'name' => 'Article',
      'new_revision' => TRUE,
    ]);
    $node_type->save();
    ContentLanguageSettings::create([
      'id' => 'node.article',
      'target_entity_type_id' => 'node',
      'target_bundle' => 'article',
      'default_langcode' => LanguageInterface::LANGCODE_DEFAULT,
      'language_alterable' => TRUE,
    ])->save();
    // Create a reference field.
    $field_definition = FieldStorageConfig::create([
      'field_name' => 'field_node_ref',
      'type' => 'entity_reference',
      'entity_type' => 'node',
      'settings' => [
        'target_type' => 'node',
      ],
      'cardinality' => FieldStorageConfig::CARDINALITY_UNLIMITED,
    ]);
    $field_definition->save();
    $field = FieldConfig::create([
      'field_storage' => $field_definition,
      'label' => 'A node reference.',
      'entity_type' => 'node',
      'bundle' => 'article',
    ]);
    $field->save();

    // Create a plaintext field to be used as token.
    FieldStorageConfig::create([
      'field_name' => 'field_node_ref_mn',
      'type' => 'string',
      'entity_type' => 'node',
      'cardinality' => FieldStorageConfig::CARDINALITY_UNLIMITED,
    ])->save();
    FieldConfig::create([
      'field_name' => 'field_node_ref_mn',
      'label' => 'The reference field machine name.',
      'entity_type' => 'node',
      'bundle' => 'article',
    ])->save();

    // Create a reference field target for token.
    FieldStorageConfig::create([
      'field_name' => 'field_node_ref_target_token',
      'type' => 'entity_reference',
      'entity_type' => 'node',
      'settings' => [
        'target_type' => 'node',
      ],
      'cardinality' => FieldStorageConfig::CARDINALITY_UNLIMITED,
    ])->save();
    FieldConfig::create([
      'field_name' => 'field_node_ref_target_token',
      'label' => 'A node reference target token.',
      'entity_type' => 'node',
      'bundle' => 'article',
    ])->save();


    /** @var \Drupal\Core\Action\ActionManager $action_manager */
    $action_manager = \Drupal::service('plugin.manager.action');
    /** @var \Drupal\eca\Token\TokenInterface $token_services */
    $token_services = \Drupal::service('eca.token_services');
    /** @var \Drupal\Core\Session\AccountSwitcherInterface $account_switcher */
    $account_switcher = \Drupal::service('account_switcher');

    $referenced = Node::create([
      'type' => 'article',
      'title' => 'I am a referenced node.',
      'langcode' => 'en',
      'uid' => 1,
      'status' => 0,
    ]);
    $referenced->save();

    $referenced_by_token = Node::create([
      'type' => 'article',
      'title' => 'I am a referenced node using tokens.',
      'langcode' => 'en',
      'uid' => 1,
      'status' => 0,
    ]);
    $referenced_by_token->save();

    $node = Node::create([
      'type' => 'article',
      'title' => '123',
      'langcode' => 'en',
      'uid' => 1,
      'status' => 0,
    ]);
    $node->save();
    $first_vid = $node->getRevisionId();
    $node->title = '456';
    $node->field_node_ref->target_id = $referenced->id();
    $node->field_node_ref_target_token->target_id = $referenced_by_token->id();
    $node->field_node_ref_mn->value = 'field_node_ref_target_token';
    $node->setNewRevision(TRUE);
    $node->save();

    // Create an action that that loads the referenced entity.
    /** @var \Drupal\eca_content\Plugin\Action\SetFieldValue $action */
    $defaults = [
      'token_name' => 'mynode',
      'from' => 'current',
      'entity_type' => '_none',
      'entity_id' => '',
      'revision_id' => '',
      'properties' => '',
      'langcode' => '_interface',
      'latest_revision' => FALSE,
      'unchanged' => FALSE,
      'field_name_entity_ref' => 'field_node_ref',
    ];
    /** @var \Drupal\eca_content\Plugin\Action\LoadEntity $action */
    $action = $action_manager->createInstance('eca_token_load_entity_ref', [] + $defaults);
    $this->assertFalse($action->access($node), 'User without permissions must not have access.');

    // Now switch to priviledged user.
    $account_switcher->switchTo(User::load(1));

    /** @var \Drupal\eca_content\Plugin\Action\LoadEntity $action */
    $action = $action_manager->createInstance('eca_token_load_entity_ref', [] + $defaults);
    $this->assertTrue($action->access($node), 'User with permissions must have access.');
    $this->assertFalse($token_services->hasTokenData('mynode'), 'Token must not yet be defined.');
    $action->execute($node);
    $this->assertTrue($token_services->hasTokenData('mynode'), 'Token must be defined.');
    $this->assertSame($referenced->id(), $token_services->getTokenData('mynode')->id());

    $token_services->addTokenData('node', $node);
    /** @var \Drupal\eca_content\Plugin\Action\LoadEntity $action */
    $action = $action_manager->createInstance('eca_token_load_entity_ref', [
        'field_name_entity_ref' => '[node:field_node_ref_mn]',
      ] + $defaults);
    $action->execute($node);
    $this->assertTrue($token_services->hasTokenData('mynode'), 'Token must be defined.');
    $this->assertSame($referenced_by_token->id(), $token_services->getTokenData('mynode')->id());
🇬🇧United Kingdom lexsoft London

Please find attached a simple example of usage using load via ref with tokens and without.
Modules used:

 "drupal/eca": "^1.1",
 "drupal/bpmn_io": "^1.1",
 "drupal/token": "^1.11"

🇬🇧United Kingdom lexsoft London

Hi @jurgenhaas,

1. This should also work $name = $this->tokenServices->replace($this->configuration['field_name']). I've just took a copy from the work was done on same module.

2. Will provide a simple example with and without token.

🇬🇧United Kingdom lexsoft London

I would recommend for new website to try https://www.drupal.org/project/eca with https://www.drupal.org/project/bpmn_io

It's more stable and a lot faster then business_rules. It lacks some documentation but once you understand it it's much easier to work with.

Production build 0.71.5 2024