anchor.diff:      SessionId = ?config({session_id, {<<"user1">>, ?GET_DOMAIN(WorkerP1)}}, Config),
       SessionId2 = ?config({session_id, {<<"user1">>, ?GET_DOMAIN(WorkerP2)}}, Config),
       Space = <<"/space4">>,
  +    RootDir = filename:join(Space, <<"simultaneous_transfers">>),
  +    FilesNum = 100,
  +    Structure = [FilesNum],
  +    FilesToCreate = lists:foldl(fun(N, AccIn) -> 1 + AccIn * N end, 1, Structure),
  +    DomainP1 = domain(WorkerP1),
       DomainP2 = domain(WorkerP2),
   
  -    RootDir = filename:join(Space, <<"simultaneous_transfers_failed">>),
  -    FilesNum = 100,
  -    {ok, _} = lfm_proxy:mkdir(WorkerP1, SessionId, RootDir),
  -
  -    FileGuids = lists:map(fun(N) ->
  -        File = filename:join(RootDir, integer_to_binary(N)),
  -        create_test_file(WorkerP1, SessionId, File, ?TEST_DATA)
  -    end, lists:seq(1, FilesNum)),
  -
  -    ?assertMatch({ok, #file_attr{}}, lfm_proxy:stat(WorkerP2, SessionId2, {path, RootDir}), ?ATTEMPTS),
  -    lists:foreach(fun(FileGuid) ->
  -        ?assertMatch({ok, #file_attr{}}, lfm_proxy:stat(WorkerP2, SessionId2, {guid, FileGuid}), ?ATTEMPTS)
  -    end, FileGuids),
  +    true = register(?CREATE_FILE_COUNTER, spawn_link(?MODULE, create_file_counter, [0, FilesToCreate, self(), []])),
  +    true = register(?SYNC_FILE_COUNTER, spawn_link(?MODULE, sync_file_counter, [0, FilesToCreate, self()])),
  +
  +    create_nested_directory_tree(WorkerP1, SessionId, Structure, RootDir),
  +    FileGuidsAndPaths = receive {create, FileGuidsAndPaths0} -> FileGuidsAndPaths0 end,
  +
  +    lists:foreach(fun({FileGuid, _FilePath}) ->
  +        worker_pool:cast(?VERIFY_POOL, {?MODULE, verify_file, [WorkerP2, SessionId2, FileGuid]})
  +    end, FileGuidsAndPaths),
  +    receive files_synchronized -> ok end,
  +
  +    ExpectedDistribution0 = [#{<<"providerId">> => DomainP1, <<"blocks">> => [[0, 4]]}],
  +    verify_files_distribution(WorkerP2, FilesToCreate, ExpectedDistribution0, FileGuidsAndPaths, SessionId2, Config),
  +
  +    {ok, #file_attr{guid = DirGuid}} = ?assertMatch({ok, #file_attr{}}, lfm_proxy:stat(WorkerP2, SessionId2, {path, RootDir})),
  +
  +    FileGuidsAndPaths2 = proplists:delete(DirGuid, FileGuidsAndPaths),
   
       mock_file_replication_failure(WorkerP2),
  -    TidsAndGuids = lists:map(fun(FileGuid) ->
  +    TidsAndGuids = lists:map(fun({FileGuid, FilePath}) ->
           {ok, FileObjectId} = cdmi_id:guid_to_objectid(FileGuid),
           Tid = schedule_file_replication_by_id(WorkerP1, DomainP2, FileObjectId, Config),
  -        {Tid, FileGuid}
  -    end, FileGuids),
  -
  -    % then
  -    lists:foreach(fun({Tid, FileGuid}) ->
  -        {ok, FileObjectId} = cdmi_id:guid_to_objectid(FileGuid),
  +        {Tid, FileObjectId, FilePath}
  +    end, FileGuidsAndPaths2),
  +
  +    % then
  +    lists:foreach(fun({Tid, FileObjectId, FilePath}) ->
           ?assertTransferStatus(#{
               <<"transferStatus">> := <<"failed">>,
               <<"targetProviderId">> := DomainP2,
  
positive.code:     Space = <<"/space10">>,
      RootDir = filename:join(Space, <<"simultaneous_transfers">>),
      FilesNum = 1000,
      {ok, _} = lfm_proxy:mkdir(WorkerP1, SessionId, RootDir),
      DomainP2 = domain(WorkerP2),
  
      FileGuids = lists:map(fun(N) ->
          File = filename:join(RootDir, integer_to_binary(N)),
          create_test_file(WorkerP1, SessionId, File, ?TEST_DATA)
      end, lists:seq(1, FilesNum)),
  
      ?assertMatch({ok, #file_attr{}}, lfm_proxy:stat(WorkerP2, SessionId2, {path, RootDir}), ?ATTEMPTS),
      lists:foreach(fun(FileGuid) ->
          ?assertMatch({ok, #file_attr{}}, lfm_proxy:stat(WorkerP2, SessionId2, {guid, FileGuid}), ?ATTEMPTS)
      end, FileGuids),
  
      TidsAndIds = lists:map(fun(FileGuid) ->
          {ok, FileObjectId} = cdmi_id:guid_to_objectid(FileGuid),
          Tid = schedule_file_replication_by_id(WorkerP1, DomainP2, FileObjectId, Config),
          {Tid, FileObjectId}
      end, FileGuids),
  
      % then
      lists:foreach(fun({Tid, FileObjectId}) ->
          ?assertTransferStatus(#{
              <<"transferStatus">> := <<"completed">>,
              <<"targetProviderId">> := DomainP2,
  
negative.code:             <<"filesProcessed">> := 1,
              <<"failedFiles">> := 1,
              <<"filesTransferred">> := 0,
              <<"bytesTransferred">> := 0,
              <<"path">> := FilePath
          }, WorkerP1, Tid, Config)
      end, TidsAndGuids).
  
  