@Test
public void successMigrateWithSourceUrisAndDestinationUris() throws Throwable {

    // create object in host
    List<ExampleServiceState> states = createExampleDocuments(this.exampleSourceFactory, getSourceHost(), this.serviceCount);
    List<URI> sourceUris = new ArrayList<>(this.host.getNodeGroupMap().values());
    List<URI> destUris = new ArrayList<>(destinationHost.getNodeGroupMap().values());
    // start migration
    MigrationTaskService.State migrationState = validMigrationState(ExampleService.FACTORY_LINK);
    migrationState.sourceNodeGroupReference = null;
    migrationState.destinationNodeGroupReference = null;
    migrationState.sourceReferences = sourceUris;
    migrationState.destinationReferences = destUris;
    Operation op = Operation.createPost(this.destinationFactoryUri).setBody(migrationState);
    State state = this.sender.sendAndWait(op, State.class);
    State finalServiceState = waitForServiceCompletion(state.documentSelfLink, getDestinationHost());
    assertEquals(TaskStage.FINISHED, finalServiceState.taskInfo.stage);
    // check if object is in new host
    List<URI> uris = getFullUri(getDestinationHost(), states);
    this.sender.sendAndWait(uris.stream().map(Operation::createGet).collect(toList()));
}