diff --git a/projects-and-groups.py b/projects-and-groups.py
new file mode 100644
index 0000000000000000000000000000000000000000..6dffb00bd022c2cbfdfc2f7ec058721a6e3b31bd
--- /dev/null
+++ b/projects-and-groups.py
@@ -0,0 +1,191 @@
+import gitlab
+# import requests
+# import json
+import argparse
+import os
+from dotenv import load_dotenv
+
+# import pandas as pd
+
+parser = argparse.ArgumentParser(description="Users and his projects from gitlab")
+
+parser.add_argument("--production", action='store_true', help="Use for Production")
+parser.add_argument("--developer", action='store_true', help="Use for Developer")
+args = parser.parse_args()
+
+load_dotenv()
+
+if args.production:
+    token = os.getenv('PRODUCTION_TOKEN')
+    print('Production Mode, connect to server')
+    headers = {'PRIVATE-TOKEN': token}
+    gl = gitlab.Gitlab(url='https://gitlab.geant.org', private_token=token)
+    # gl_proj = 'https://gitlab.geant.org/api/v4/projects'
+    projects = gl.projects.list(all=True)
+    # groups = gl.groups.list(all=False)
+    # gl.auth()
+    # gl.enable_debug()
+elif args.developer:
+    token = os.getenv('CE_PRODUCTION_TOKEN')
+    print('Developer Mode, connect to server')
+    headers = {'PRIVATE-TOKEN': token}
+    gl = gitlab.Gitlab(url='https://gitlab.software.geant.org', private_token=token)
+    projects = gl.projects.list(all=True)
+    # groups = gl.groups.list(all=True)
+else:
+    print("--production or --developer, please, now exit")
+    exit()
+
+
+def proj_group_list(p_id: int) -> list:
+    '''zwraca id projektów danej grupy'''
+    edu = gl.groups.get(p_id, lazy=True, all=True)
+    p_list_name = []
+    for e in edu.projects.list(lazy=True, all=True):
+        p_list_name.append(e.id)
+    return p_list_name
+
+
+def print_group_list_names(p_id: int):
+    '''zwraca nazwę projektów danej grupy'''
+    edu = gl.groups.get(p_id, lazy=True, all=True)
+    print(edu)
+    for e in edu.projects.list(lazy=True, all=True):
+        print(e.name_with_namespace)
+    # return p_list_name
+
+
+def arch_project(p_id: int) -> str:
+    """archiwizuje wskazany projekt"""
+    project = gl.projects.get(p_id)
+    project.archive()
+    odp = "archiwizacja projektu " + str(p_id)
+    return odp
+
+
+def ce_only_projects(no_groups: list) -> list:
+    """zwraca listę projektów bez tych,
+    które pozostają w unlimited"""
+    tmp_list = []
+    for project in projects:
+        # print(project.id)
+        if project.id not in no_groups:
+            tmp_list.append(project.id)
+    return tmp_list
+
+
+def proj_group_and_subgroup(group_list: list) -> list:
+    """lista projektów grup i subgroup"""
+    a_tmp_list = []
+    for gr in group_list:
+        b_tmp_list = proj_group_list(gr)
+        for b in b_tmp_list:
+            a_tmp_list.append(b)
+    return a_tmp_list
+
+
+def group_members(id_gr: int) -> list:
+    """tworzy listę użytkowników podanej grupy"""
+    u_tmp_list = []
+    group = gl.groups.get(id_gr)
+    members = group.members_all.list(get_all=True)
+    for member in members:
+        u_tmp_list.append(member.id)
+    return u_tmp_list
+
+
+# InAcademia / dev => 260
+# InAcademia / Ops => 362
+
+# eduTEAMS / Core AAI Platform => 779
+# eduTEAMS / Customer deployments => 773
+# eduTEAMS / Test deployments => 774
+# eduTEAMS / Internal Tooling => 777
+# eduTEAMS / Auth Proxy => 772
+# eduTEAMS / Consent Management => 780
+# eduTEAMS / Discovery Service => 776
+# eduTEAMS / MDX => 775
+# eduTEAMS / Membership Management System => 781
+# eduTEAMS / Service Management => 778
+
+# lokalni użytkownicy Gitlab
+exclude_users = ['root', 'ghost', 'tkazmierczak', 'visual-review-bot', 'jacques', 'pawel.sierota', 'support-bot',
+                 'psierota', 'pisarz', 'alert-bot', 'mathias.baggendorf', 'rash.mali']
+
+# InAcademia members groups
+ina_groups = [29, 260, 362]
+
+# InAcademia all projects
+ina_projects_list = proj_group_and_subgroup(ina_groups)
+
+# EduTeams member groups
+edu_groups = [146, 779, 773, 774, 777, 772, 780, 776, 775, 781, 778]
+
+# EduTeams all projects
+edu_projects_list = proj_group_and_subgroup(edu_groups)
+
+# Ultimate - all projects
+ultimate_projects_list = edu_projects_list + ina_projects_list
+
+# List of projects moved to CE
+ce_projects_list = ce_only_projects(ultimate_projects_list)
+
+""" lista użytkowników grup Ultimate"""
+edu_members = group_members(146)
+# print("edu members: " + str(edu_members))
+#
+ina_members = group_members(29)
+# print("InAcademia users: " + str(ina_members))
+
+""" lista pozostałych projektów """
+# print("InAcademia Projects: " + str(ina_projects_list))
+# print("EduTeams Projects: " + str(edu_projects_list))
+# print("CE project: " + str(ce_projects_list))
+
+"""lista redirect, umieszczona później na serwerze Ultimate"""
+# for rl in ce_projects_list:
+#     project_ = gl.projects.get(rl)
+#     print("# " + str(rl))
+#     print(f"rewrite ^/{project_.path_with_namespace}$" + " " +
+#           f"https://gitlab.software.geant.org/{project_.path_with_namespace} ;")
+#     print(f"rewrite ^/{project_.path_with_namespace}.git$" + " " +
+#           f"https://gitlab.software.geant.org/{project_.path_with_namespace}.git ;")
+#     # print(project_.http_url_to_repo)
+#     print(f"rewrite ^/{project_.path_with_namespace}/(.*)$" + " " +
+#           f"https://gitlab.software.geant.org/{project_.path_with_namespace}/$1 ;")
+#     print(f"rewrite ^/api/v4/project/{project_.id}/(.*)$" + " " +
+#           f"https://gitlab.software.geant.org/api/v4/project/{project_.id}/$1 ;")
+#     print("####")
+
+
+""" archiwizacja wszystkich projektów, które nie zostają na ultimate"""
+# print("Archiwizacja projektów...")
+# for rl in ce_projects_list:
+#     tmp_a = arch_project(rl)
+#     print(tmp_a)
+
+""" archiwizacja projektów Ultimate na CE"""
+# # print("Archiwizacja projektów...")
+# for rl in ultimate_projects_list:
+#     tmp_a = arch_project(rl)
+#     print(tmp_a)
+
+""" użytkownicy lokalni/ldap w gitlab"""
+gitlab_members = []
+for u in exclude_users:
+    tmp_user = gl.users.list(username=u)[0]
+    gitlab_members.append(tmp_user.id)
+print("Gitlab Exclude users: " + str(gitlab_members))
+
+""" Ultimate - wyłączenie użytkowników spoza projektów Ultimate"""
+# users = gl.users.list(lazy=True, all=True)
+# for user in users:
+#     if user.id not in gitlab_members + ina_members + edu_members:
+#         tmp_user = gl.users.get(user.id)
+#         tmp_user.block()
+#         print("Blocked user: " + tmp_user.username)
+
+""" CE - archiwizacja projektów, które pozostały na Ultimate """
+# for project in projects:
+#     if project.id in ultimate_projects_list:
+#         print(project.name_with_namespace)