diff --git a/roles/bodhi2/backend/files/new-updates-sync b/roles/bodhi2/backend/files/new-updates-sync
index bfbbac4fe1..3fd3b06cca 100755
--- a/roles/bodhi2/backend/files/new-updates-sync
+++ b/roles/bodhi2/backend/files/new-updates-sync
@@ -475,19 +475,74 @@ def sync_single_release(release):
     return needssync
 
 def update_epel_release_latest(releases):
+    """
+    This function, creates or updates a symbolic links for epel-release packages.
+
+    Creates or updates a symbolic link pointing to the latest release of the epel-release package and another pointing to the next release of the epel-release package.
+    The symbolic link will be created or updated if:
+    - There isn't a symbolic link for the latest package;
+    - Current symbolic link is pointing to an outdated package;
+    - Current symbolic link is broken;
+    - There is a file that isn't a link with the same name of the symbolic link.
+
+    If the symbolic link is pointing to the latest release already, this function will do nothing.
+
+    Parameters:
+    releases (dict): contains similar information of global variable RELEASES
+    """
+    # get releases, next and latest pkgs paths into separated lists
+    aux = {
+        "release": set(),
+        "next": list(),
+        "latest": list(),
+    }
+    
     for release in releases:
         if 'epel' in release:
-            for path in Path(RELEASES[release]['repos']['epel']['to'][0]['dest']).rglob('epel-release*noarch*'):
+            for path in Path(RELEASES[release]['repos']['epel']['to'][0]['dest']).rglob('epel-*release*noarch*'):
                 if 'Packages' in str(path) and 'x86_64' in str(path):
-                    dest = '/pub/epel/epel-release-latest-' + release[4]+ '.noarch.rpm'
-                    if os.path.lexists(dest):
-                        if not os.path.islink(dest) or not os.path.exists(os.path.join(EPELDEST,os.readlink(dest))):
-                            os.remove(dest)
-                            os.symlink(os.path.relpath(path, os.path.dirname(dest)), dest)
-                            break
-                    else:
-                        os.symlink(os.path.relpath(path, os.path.dirname(dest)), dest)
-                        break
+                    aux['release'].add(release[4])
+                    if "next" in str(path):
+                        aux["next"].append(str(path))
+                    elif str(path)[-19].isdigit():
+                        aux["latest"].append(str(path))
+
+    # get most recent package from next and latest lists of each release
+    paths = dict()
+
+    for release in aux['release']:
+        paths[release] = {
+            'next': '',
+            'latest': ''
+        }
+
+        for pkg_name in list(paths[release].keys()):
+            for path in aux[pkg_name]:
+                if release in path[:10] and path > paths[release][pkg_name]:
+                    paths[release][pkg_name] = path
+
+    paths[release] = {k: v for k,v in paths[release].items() if v != ''}
+
+    # create/update symbolic links
+    for release in list(paths.keys()):
+        for pkg_name in list(paths[release].keys()):
+            pkg_relpath = os.path.relpath(paths[release][pkg_name],EPELDEST)
+
+            if 'next' in paths[release][pkg_name]:
+                dest = 'pub/epel/epel-next-release-latest-' + release + '.noarch.rpm'
+            else:
+                dest = 'pub/epel/epel-release-latest-' + release + '.noarch.rpm'
+
+            if os.path.lexists(dest) and os.path.islink(dest):
+                origin_dest = os.path.join(EPELDEST,os.readlink(dest))
+                if origin_dest < paths[release][pkg_name]:
+                    os.remove(dest)
+                    os.symlink(pkg_relpath, dest)
+            elif os.path.lexists(dest) and not os.path.islink(dest):
+                os.remove(dest)
+                os.symlink(pkg_relpath, dest)
+            else:
+                os.symlink(pkg_relpath, dest)
 
 def main():
     parser = argparse.ArgumentParser()