**Affected version:** 8.2 - 8.5.2
**Fixed in:** 8.5.3

### Problem Description

The problem applies to transforms that use more than 1 CCS cluster or 1 local and 1 CCS as source. A typical source could look like this (the important part: `remotes*`):

```
        "index" : [
          "remotes*:filebeat*"
        ],

```

If 2 indices share the same name the transform might fail with an error similar to this:

```
 Failed to retrieve checkpoint due to: Duplicate key logs-2022-11-14 (attempted merging values [... and ...]
```

Similar to the above the `_stats` call is broken for such a transform, it can fail with an error message starting with:

```
Failure during checkpoint retrieval
```

This can happen even if the transform is in state `STOPPED` or `FAILED`.

### Mitigation

Choose _one_ of the following mitigations:

 - split your transforms to use max 1 CCS/local indices

_or_

 - avoid upgrading to 8.2, until the issue got resolved (this is a regression of #80984)

_or_

 - avoid duplicate names for your indices even on remote cluster, e.g. name the index: `remote1-filebeat...`, `remote2-filebeat...`


### Solution

This is a regression of #80984 which introduced a new way of check-pointing. The remote needs to be prefixed to the index name.
x-pack/plugin/transform/src/test/java/org/elasticsearch/xpack/transform/checkpoint/DefaultCheckpointProviderTests.java
HashSet<String> newSet = new HashSet<>();
        for (int i = 50; i < 150; ++i) {
            newSet.add(String.valueOf(i));
        }
        assertExpectation(
            new MockLogAppender.SeenEventExpectation(
                "info about adds/removal",
                checkpointProviderLogger.getName(),
                Level.DEBUG,
                "[" + transformId + "] Source index resolve found more than 10 changes, [50] removed indexes, [50] new indexes"
            ),
            new MockTransformAuditor.SeenAuditExpectation(
                "info about adds/removal",
                org.elasticsearch.xpack.core.common.notifications.Level.INFO,
                transformId,
                "Source index resolve found more than 10 changes, [50] removed indexes, [50] new indexes"
            ),
            () -> { provider.reportSourceIndexChanges(oldSet, newSet); }
        );
    }
    public void testHandlingShardFailures() throws Exception {
        String transformId = getTestName();
        String indexName = "some-index";
        TransformConfig transformConfig = new TransformConfig.Builder(TransformConfigTests.randomTransformConfig(transformId)).setSource(
            new SourceConfig(indexName)
        ).build();
        RemoteClusterResolver remoteClusterResolver = mock(RemoteClusterResolver.class);
        doReturn(new RemoteClusterResolver.ResolvedIndices(Collections.emptyMap(), Collections.singletonList(indexName))).when(
            remoteClusterResolver
        ).resolve(transformConfig.getSource().getIndex());