The fields below are part of the node/add node/edit forms of my custom node type. [![enter image description here][1]][1] The paragraph `field_para_city` contain one `field_city`. (I later need to add other fields in the paragraph). The user can add multiple instances from `field_para_city`. `field_city` has an allowed_values_function defined in a YML file, which returns all possible cities from all countries. I created a `class MyNodeTypeForm extends NodeForm`, with a `public function buildForm()`. This function adds AJAX to `field_country` so that when it changes (i.e. the user chooses a country) it (re-)populates all the **existing** instances of field_city (inside the `field_para_city` instances) with corresponding list of cities (e.g., London and Cardiff for the UK). In MY_MODULE.module, I added the following so that the above code is executed on the node/add and node/edit forms. function MY_MODULE_entity_type_alter(array &$entity_types) { $handlers = $entity_types['node']->get('handlers'); $handlers['form']['default'] = 'Drupal\MY_MODULE\Form\MyNodeTypeForm'; $handlers['form']['edit'] = 'Drupal\MY_MODULE\Form\MyNodeTypeForm'; $entity_types['node']->set('handlers', $handlers); } All works fine, **except when the user add or remove instances of `field_para_city`** ("Add city" or "Remove"), then all instances of the `field_para_city` are refreshed and `field_city` instances inside them are reset to the allowed values (all cities), ignoring the state of `field_country`. The user would then need to re-select from `field_country` to get the correct cities again. I found that although adding/removing a `field_para_city` triggered the above mentioned `buildForm()` function, the `$form_state->getValue('field_country')` was then empty, unlike when `buildForm()` is triggered through the `field_country` AJAX. I tried to capture the state of `field_country` in the `field_city`'s allowed_values_function, so that the allowed options are dynamically and directly set based on the user choice of country, but `$form_state` was not recognised there. _____ I know this is an incorrect approach! What is the correct better approach to implement this simple use case? [1]: https://i.sstatic.net/WHghE.jpg