def METHOD_NAME(*, engine, organization: Organization):
    """Initializes a new schema."""
    schema_name = f"{DISPATCH_ORGANIZATION_SCHEMA_PREFIX}_{organization.slug}"
    if not engine.dialect.has_schema(engine, schema_name):
        with engine.connect() as connection:
            connection.execute(CreateSchema(schema_name))
    # set the schema for table creation
    tables = get_tenant_tables()
    schema_engine = engine.execution_options(
        schema_translate_map={
            None: schema_name,
        }
    )
    Base.metadata.create_all(schema_engine, tables=tables)
    # put schema under version control
    version_schema(script_location=config.ALEMBIC_TENANT_REVISION_PATH)
    with engine.connect() as connection:
        # we need to map this for full text search as it uses sql literal strings
        # and schema translate map does not apply
        for t in tables:
            t.schema = schema_name
        setup_fulltext_search(connection, tables)
    session = sessionmaker(bind=schema_engine)
    db_session = session()
    organization = db_session.merge(organization)
    db_session.add(organization)
    db_session.commit()
    return organization