private void fireRemote(final EntityEvent entityEvent,
                            final TaskContext parentTaskContext) {
        try {
            final TargetNodeSetFactory targetNodeSetFactory = targetNodeSetFactoryProvider.get();

            // Get this node.
            final String sourceNode = targetNodeSetFactory.getSourceNode();

            // Get the nodes that we are going to send the entity event to.
            final Set<String> targetNodes = targetNodeSetFactory.getEnabledActiveTargetNodeSet();

            // Only send the event to remote nodes and not this one.
            CompletableFuture.allOf(targetNodes
                    .stream()
                    .filter(targetNode -> !targetNode.equals(sourceNode))
                    .map(targetNode -> {
                        // Send the entity event asynchronously.
                        final Runnable runnable = taskContextFactory.childContext(
                                parentTaskContext,
                                "Fire Entity Event To " + targetNode, taskContext ->
                                        entityEventResource.fireEvent(targetNode, entityEvent)
                        );
                        return CompletableFuture.runAsync(runnable, executor);
                    }).toArray(CompletableFuture[]::new)).join();
        } catch (final NullClusterStateException | NodeNotFoundException e) {
            LOGGER.warn(e.getMessage());
            LOGGER.debug(e.getMessage(), e);
        } catch (final RuntimeException e) {
            LOGGER.error(e.getMessage(), e);
        }
    }
Fires the entity change to all nodes in the cluster.
stroom-core/src/main/java/stroom/core/entity/event/EntityEventBusImpl.java