def METHOD_NAME(
    schain: dict,
    ima_data: ImaData,
    migration_ts: int = 0,
    dutils: DockerUtils = None
) -> None:
    schain_name = schain["name"]
    if DISABLE_IMA:
        logger.info(f'{schain_name} - IMA is disabled, skipping')
        return
    if not ima_data.linked:
        logger.info(f'{schain_name} - not registered in IMA, skipping')
        return
    copy_schain_ima_abi(schain_name)
    container_exists = is_container_exists(
        schain_name, container_type=IMA_CONTAINER, dutils=dutils)
    container_image = get_container_image(schain_name, IMA_CONTAINER, dutils)
    new_image = get_image_name(type=IMA_CONTAINER, new=True)
    expected_image = get_image_name(type=IMA_CONTAINER)
    logger.debug('%s IMA image %s, expected %s', schain_name,
                 container_image, expected_image)
    if time.time() > migration_ts:
        logger.debug('%s IMA migration time passed', schain_name)
        expected_image = new_image
        if container_exists and expected_image != container_image:
            logger.info(
                '%s Removing old container as part of IMA migration', schain_name)
            remove_container(schain_name, IMA_CONTAINER, dutils)
            container_exists = False
    if not container_exists:
        logger.info('%s No IMA container, creating, image %s',
                    schain_name, expected_image)
        run_ima_container(
            schain,
            ima_data.chain_id,
            image=expected_image,
            dutils=dutils
        )
    else:
        logger.debug(
            'sChain %s: IMA container exists, but not running, skipping', schain_name)