In order to make it work I had to regenerate the menu order.
function custom_insert_service_menus($items, $menu, $args){
if($menu->slug != 'main-menu') return $items; // only run filter for main-menu
$new_items = [];
$menu_order = 1;
foreach($items as $item){
$item->menu_order = $menu_order;
$new_items[] = $item;
$menu_order++;
if($item->object == 'service'){
$menu_id = get_field('menu', $item->object_id);
if(!empty($menu_id)){ // no menu so skip item
$service_menu_items = wp_get_nav_menu_items($menu_id);
foreach($service_menu_items as $service_menu_item){
if($service_menu_item->menu_item_parent == 0){
$service_menu_item->menu_item_parent = $item->ID;
}
$service_menu_item->menu_order = $menu_order;
$new_items[] = $service_menu_item;
$menu_order++;
}
}
}
}
return $new_items;
}