**Found in version**
- Observed in 8.2.3, but might exist longer

**Steps to reproduce**
On a multi node cloud cluster (might also work on a local multi node cluster):
- Create a transform with a retention policy
- Update the transform and remove the retention policy

**Expected result**
- The retention policy is removed

**Actual result**
- This sometimes results in an error:
```
An error occurred calling the API endpoint to update transforms.
Bad Request: [illegal_argument_exception: [illegal_argument_exception] Reason: 
Unknown NamedWriteable [org.elasticsearch.xpack.core.transform.transforms.RetentionPolicyConfig][null_retention_policy]]:
Unknown NamedWriteable [org.elasticsearch.xpack.core.transform.transforms.RetentionPolicyConfig][null_retention_policy]
```

**Additional information**
- Quote from slack discussion with @benwtrent:
  > It wouldn’t happen if you hit a node that can execute the update immediately without serializing to a different node
x-pack/plugin/transform/qa/multi-node-tests/src/javaRestTest/java/org/elasticsearch/xpack/transform/integration/TransformIT.java
QueryConfig.matchAll(),
            indexName
        ).setPivotConfig(createPivotConfig(groups, aggs))
            .setSyncConfig(new TimeSyncConfig("timestamp", TimeValue.timeValueSeconds(1)))
            .build();
        putTransform(transformId, Strings.toString(config), RequestOptions.DEFAULT);
        startTransform(config.getId(), RequestOptions.DEFAULT);
        
        stopTransform(transformId, false, null, true);
        
        waitUntilCheckpoint(config.getId(), 1L);
        
        assertBusy(() -> {
            var stateAndStats = getTransformStats(config.getId());
            assertThat(stateAndStats.get("state"), equalTo("stopped"));
            assertThat((Integer) XContentMapValues.extractValue("stats.documents_indexed", stateAndStats), equalTo(1000));
        });
        int additionalRuns = randomIntBetween(1, 10);
        for (int i = 0; i < additionalRuns; ++i) {
            
            long timeStamp = Instant.now().toEpochMilli() - 1_000;
            long user = 42 + i;
            indexMoreDocs(timeStamp, user, indexName);
            startTransformWithRetryOnConflict(config.getId(), RequestOptions.DEFAULT);
            boolean waitForCompletion = randomBoolean();
            stopTransform(transformId, waitForCompletion, null, true);
            assertBusy(() -> {
                var stateAndStats = getTransformStats(config.getId());
                assertThat(stateAndStats.get("state"), equalTo("stopped"));
            });