Managed domain-aware entities with multisite configuration
We've come across an edge-case in a multi-site setup.
In our setup, we have a master domain which does not have 'Enable Multi Site Configuration' enabled. And subdomains which do.
This is allowed configuration according to the docs: https://docs.civicrm.org/installation/en/latest/multisite/drupal/#:~:text=It%20is%20not,or%20website%20administrators.
We also have a managed 'job' entity (provided by https://lab.civicrm.org/extensions/mjwshared/-/blob/master/managed/ProcessPaymentprocessorWebhooks.mgd.php?ref_type=heads)
The managed entity is set to 'always' update.
- We run Managed->Reconcile on domain ID 1 (multisite not enabled)
- The job row is created
- An entry in civicrm_managed is created
# id, module, name, entity_type, entity_id, cleanup, entity_modified_date
'1796', 'mjwshared', 'ProcessPaymentProcessorWebhooks', 'Job', '116', 'always', NULL
- The job in civicrm_job is created
# id, domain_id, run_frequency, last_run, scheduled_run_date, name, description, api_entity, api_action, parameters, is_active
'116', '1', 'Always', NULL, NULL, 'Process PaymentProcessor Webhooks', 'Process incomplete payment processor webhooks', 'Job', 'process_paymentprocessor_webhooks', 'delete_old=-3 month', '1'
- Managed->Reconcile run on domain ID 43 (multisite enabled)
- The entries in civicrm_managed are converted into 'domain-aware' entries:
# id, module, name, entity_type, entity_id, cleanup, entity_modified_date
'1803', 'mjwshared', 'ProcessPaymentProcessorWebhooks_32', 'Job', '116', 'always', NULL
'1804', 'mjwshared', 'ProcessPaymentProcessorWebhooks_42', 'Job', '116', 'always', NULL
'1805', 'mjwshared', 'ProcessPaymentProcessorWebhooks_43', 'Job', '116', 'always', NULL
- The job in civicrm_job is 'moved' to another domain:
# id, domain_id, run_frequency, last_run, scheduled_run_date, name, description, api_entity, api_action, parameters, is_active
'116', '43', 'Always', NULL, NULL, 'Process PaymentProcessor Webhooks', 'Process incomplete payment processor webhooks', 'Job', 'process_paymentprocessor_webhooks', 'delete_old=-3 month', '1'
- Managed->Reconcile run on domain ID 1 again (not multisite enabled)
- The entry in civicrm_job has been deleted - no more essential scheduled job!
- The entry in civicrm_managed changes back to not domain aware, and references a deleted row
# id, module, name, entity_type, entity_id, cleanup, entity_modified_date
'1796', 'mjwshared', 'ProcessPaymentProcessorWebhooks', 'Job', '116', 'always', NULL
So we need to either:
- Update the docs to say that the 'master' domain does need to be multisite aware
- Update the handling of domain-aware managed entities to work correctly when reconciled in either domain