anchor.diff:          #suite_spec{
               target_nodes = Providers,
               client_spec = ?CLIENT_SPEC_FOR_TRANSFER_SCENARIOS(Config),
  -            setup_fun = create_setup_file_replication_env(replication, P1, P2, ?USER_IN_SPACE_2, Config),
  -            verify_fun = create_verify_transfer_env(replication, P2, ?USER_IN_SPACE_2, P1, P2, Config),
  +            setup_fun = create_setup_file_replication_env(Type, P1, P2, ?USER_IN_SPACE_2, Config),
  +            verify_fun = create_verify_transfer_env(Type, P2, ?USER_IN_SPACE_2, P1, P2, Config),
               scenario_templates = [
                   #scenario_template{
  -                    name = <<"Replicate file using gs transfer api">>,
  +                    name = str_utils:format("Transfer (~p) file using gs transfer api", [Type]),
                       type = gs,
                       prepare_args_fun = create_prepare_transfer_create_instance_gs_args_fun(private),
                       validate_result_fun = fun validate_transfer_gs_call_result/2
                   }
               ],
  -            data_spec = add_file_id_bad_values(#data_spec{
  -                required = [
  -                    <<"type">>, <<"dataSourceType">>,
  -                    <<"replicatingProviderId">>,
  -                    <<"fileId">>
  -                ],
  -                optional = [<<"callback">>],
  -                correct_values = #{
  -                    <<"type">> => [<<"replication">>],
  -                    <<"dataSourceType">> => [<<"file">>],
  -                    <<"replicatingProviderId">> => [?GET_DOMAIN_BIN(P2)],
  -                    <<"fileId">> => [?PLACEHOLDER],
  -                    <<"callback">> => [Callback]
  -                },
  -                bad_values = ?TYPE_AND_DATA_SOURCE_TYPE_BAD_VALUES ++ [
  -                    {<<"replicatingProviderId">>, 100, ?ERROR_BAD_VALUE_BINARY(<<"replicatingProviderId">>)},
  -                    {<<"replicatingProviderId">>, <<"NonExistingProvider">>, ?ERROR_SPACE_NOT_SUPPORTED_BY(<<"NonExistingProvider">>)},
  -                    {<<"callback">>, 100, ?ERROR_BAD_VALUE_BINARY(<<"callback">>)}
  -                ]
  -            }, ?SPACE_2, undefined)
  +            data_spec = add_file_id_bad_values(TransferDataSpec, ?SPACE_2, undefined)
           },
   
           %% TEST DEPRECATED REPLICAS ENDPOINTS
  
positive.code: 
          case TransferType of
              replication ->
                  % Wait until FilesToTransfer are all indexed by view on DstNode.
                  % Otherwise some of them could be omitted from replication.
                  ?assertViewQuery(ObjectIds, DstNode, ?SPACE_2, ViewName,  QueryViewParams);
              eviction ->
                  % Wait until file_distribution containing entries for both nodes
                  % and all FilesToTransfer are indexed by view on SrcNode.
                  % Otherwise some of them could be omitted from eviction (if data
                  % replicas don't exist on other providers it is skipped).
                  assert_distribution(
                      SrcNode, SessId1, OtherFiles ++ FilesToTransfer,
                      [{SrcNode, ?BYTES_NUM}, {DstNode, ?BYTES_NUM}]
                  ),
                  ?assertViewQuery(ObjectIds, SrcNode, ?SPACE_2, ViewName,  QueryViewParams);
              migration ->
                  % Wait until FilesToTransfer are all indexed by view on SrcNode and DstNode.
  
negative.code: all() ->
      ?ALL([
          create_file_replication,
          create_file_eviction,
  
          create_view_replication,
          create_view_eviction,
  