anchor.diff:      SpaceId = str_utils:rand_hex(32),
       Node = oct_background:get_random_provider_node(paris),
   
  -    ExpLinks = populate_links(Node, SpaceId, Phase, LinksNum),
  +    AllAtmInventoryIds = [str_utils:rand_hex(32) || _ <- lists:seq(1, 5)],
  +    ListedAtmInventoryIds = lists_utils:random_element([
  +        all,
  +        lists_utils:random_element(AllAtmInventoryIds),
  +        lists_utils:random_sublist(AllAtmInventoryIds)
  +    ]),
  +    ExpLinks = populate_links(Node, SpaceId, Phase, AllAtmInventoryIds, ListedAtmInventoryIds, LinksNum),
   
       ListingOpts = case ListingMethod of
           offset -> #{offset => 0, limit => Limit};
           start_index -> #{start_index => <<>>, limit => Limit}
       end,
  -    ListedLinks = list_all_links_by_chunk(Node, ListingMethod, SpaceId, Phase, ListingOpts, []),
  -
  +    ListedLinks = list_all_links_by_chunk(
  +        Node, ListingMethod, SpaceId, Phase, ListedAtmInventoryIds, ListingOpts, []
  +    ),
       ?assertEqual(ExpLinks, ListedLinks).
   
   
  
positive.code:     KrkNode = oct_background:get_random_provider_node(krakow),
      ParNode = oct_background:get_random_provider_node(paris),
  
      AtmWorkflowExecutionDoc = gen_rand_workflow(SpaceId),
      AtmWorkflowExecutionId = AtmWorkflowExecutionDoc#document.key,
  
      add_link(KrkNode, Phase, AtmWorkflowExecutionDoc),
  
      ?assertEqual(true, is_member(KrkNode, SpaceId, Phase, AtmWorkflowExecutionId)),
      ?assertEqual(false, is_member(ParNode, SpaceId, Phase, AtmWorkflowExecutionId)),
  
      % Assert links are not synchronized between providers
      % (wait some time to give time for potential synchronization)
  
negative.code:     oct_background:end_per_suite().
  
  
  init_per_testcase(_Case, Config) ->
      ct:timetrap({minutes, 5}),
      Config.
  