def reset_supplier_declaration(stage, framework_slug, reason, email, supplier_id):
    data_api_token = get_auth_token('api', stage) if stage != 'development' else 'myToken'
    data_api_client = DataAPIClient(get_api_endpoint_from_stage(stage), data_api_token)

    if email:
        user = data_api_client.get_user(email_address=email)

        if not user:
            print(f'No user found for email address `{email}`')
            exit(1)

        user_supplier_id = user['users']['supplier']['supplierId']
        if user_supplier_id and supplier_id and user_supplier_id != supplier_id:
            print(f'Email address provided does not match with supplier provided. Email address `{email}` is '
                  f'associated with supplierId `{supplier_id}`. Script was called with supplierId `{supplier_id}`.')
            exit(2)

        supplier_id = user_supplier_id

    try:
        supplier_framework = data_api_client.get_supplier_framework_info(supplier_id=supplier_id,
                                                                         framework_slug=framework_slug)
        print(f"Current supplier declaration: {supplier_framework['frameworkInterest']['declaration']}")

    except HTTPError:
        print(f'No supplier framework found for supplierId `{supplier_id}` on framework `{framework_slug}`.')
        exit(3)

    if not supplier_framework:
        print(f'No supplier framework/interest record found for supplierId `{supplier_id}` on framework '
              f'`{framework_slug}`.')
        exit(4)

    data_api_client.set_supplier_declaration(supplier_id=supplier_id, framework_slug=framework_slug, declaration={},
                                             user=f'{getpass.getuser()} - {reason}')
    data_api_client.set_supplier_framework_prefill_declaration(supplier_id=supplier_id, framework_slug=framework_slug,
                                                               prefill_declaration_from_framework_slug=None,
                                                               user=f'{getpass.getuser()} - {reason}')
    print(f'Supplier declaration for supplierId `{supplier_id}` on framework `{framework_slug}` has been reset.')
    while services_generated < args.quantity:
        random_lot = random.choice(args.lots)
        random_supplier = random.choice(suppliers)

        supplier_id = random_supplier['supplierId']
        if supplier_id not in suppliers_prepared:
            # 2a) For each supplier, register interest in a given (new) framework
            data_api_client.register_framework_interest(
                supplier_id=supplier_id,
                framework_slug=args.new_slug,
                user=identity)

            # 2b) Submit and mark as complete a valid supplier declaration for the new framework
            data_api_client.set_supplier_declaration(
                supplier_id=supplier_id,
                framework_slug=args.new_slug,
                declaration=eligible_g9_declaration_base(),
                user=identity)

            suppliers_prepared.add(supplier_id)

        fake_service = gcloud_service_faker.generate_from_file(
            filepath_service_lot_schema(args.validation_schema_path,
                                        args.new_slug, random_lot))
        fake_service['serviceName'] = gen_gcloud_name()

        draft_service = data_api_client.create_new_draft_service(
            framework_slug=args.new_slug,
            lot=random_lot,
            supplier_id=supplier_id,
            data=fake_service,