Preg_match (unknown modifier) in sync rule

Hi guys,

I am trying to sync (create) services from an existing datasource in icinga director. Alle the prechecks (Check for changes) running fine but on “Trigger this Sync” I am facing the error:

Icinga\Module\Director\Objects\IcingaService uv2-rtt-check-(XXX/ preg_match(): Unknown modifier ''

My environment:

Icinga Core 2.12.1-1
Director: 1.7.2 (git 9c95fb8680f6f389ca24ff6e41d9002185596cb3)
ipl: 0.5.0
reactbundle: 0.7.0
incubator: 0.5.0


php -v
PHP 7.4.12 (cli) (built: Nov  3 2020 14:31:48) ( NTS )

sample data (anonymised) for my import / sync:

rtt_checks_uid rtt_checks_descr rtt_checks_ip rtt_checks_location rtt_checks_method sat_descr sat_ip sat_rtt_satid
19! some office XXX vpn AAA 19
20! some office XXX vpn BBB 20

key column -> rtt_checks_uid (concat in psql query)

The sync rule:

Source name Source field Destination Prio
uv2-db-rtt-checks uv2-rtt-check-(${sat_descr}/${rtt_checks_ip}) object_name
uv2-db-rtt-checks director-template-service-rtt import
uv2-db-rtt-checks hostname.domain.tld host
uv2-db-rtt-checks ${rtt_checks_descr} notes

Is that a bug?

Thx & br

Update: I´ve found a similar behavior during editing the used service-template:

preg_match(): Unknown modifier ‘’ (AssignFilterHelper.php:153)

template Service "director-template-service-rtt" {
    import "director-template-service-generic"

    check_command = "check_rtt"
    max_check_attempts = "2"
    retry_interval = 1s
    check_timeout = 10s
    enable_notifications = false
    vars.rtt_calc_timeframe = "5"
    vars.rtt_critical_integer = "30"
    vars.rtt_critical_percent = "50"
    vars.rtt_easy_query = "1"
    vars.rtt_influxdb_host = ""
    vars.rtt_influxdb_measurement = "icmpstats_rtt"
    vars.rtt_influxdb_name = "xx"
    vars.rtt_influxdb_port = "8086"
    vars.rtt_overwrite_result = "false"
    vars.rtt_performance_data = "true"
    vars.rtt_warning_integer = "12"

looking into the file shows me:

protected function matchesExpression(FilterExpression $filter, $object)



-->>> return (bool) preg_match($pattern, $value);


The weird thing is: The error is shown but the changes have been saved after pressing the STORE button. Unfortunately this does not working during an director sync-rule import.

Solution: I had one service-group apply in director using the following filter rule: = director-apply-http-(*\/US\/*)

-> deleted -> everything is working fine. The backslash somehow caused all the troubles.