# :=

### Description

`:=` always has an information field on its left (domicile, risk\_level, etc.), and any kind of expression on its right side.

Attaching a condition with `:=` to a field, means the field will only be assigned a value based on this condition if it doesn't already have a value. If a user has already provided a value for the field, the system will not override that value.

{% hint style="success" %}
This operator can only be used when [writing](https://docs.atfinity.io/rule-language/operators/special-operators/broken-reference) the assignment part of a [process rule](https://docs.atfinity.io/rule-language/operators/special-operators/broken-reference).
{% endhint %}

### Examples

```
p is Person
---
p.tax_country := p.domicile
```

The field `tax_country`will be assigned the same value as the field `domicile`, unless another value for `tax_country`has already been provided.

```
c is Contract
---
c.service := asset_management
```

The service attached to this contract will be 'Asset Management', unless another service has already been entered in the field `service`.

```
p is Person
---
p.full_name := CONCAT(p.first_name, ' ', p.last_name)
```

The field `full_name` will receive a value that is the combination of the values in the fields `first_name` and `last_name`, separated by a space. Again: only if the field `full_name` hasn't already been assigned a value.
