def inject_immutable_parameters(
    action_alias_db, multiple_execution_parameters, action_context
):
    """
    Inject immutable parameters from the alias definiton on the execution parameters.
    Jinja expressions will be resolved.
    """
    immutable_parameters = action_alias_db.immutable_parameters or {}
    if not immutable_parameters:
        return multiple_execution_parameters

    user = action_context.get("user", None)

    context = {}
    context.update(
        {
            kv_constants.DATASTORE_PARENT_SCOPE: {
                kv_constants.SYSTEM_SCOPE: kv_service.KeyValueLookup(
                    scope=kv_constants.FULL_SYSTEM_SCOPE
                ),
                kv_constants.USER_SCOPE: kv_service.UserKeyValueLookup(
                    scope=kv_constants.FULL_USER_SCOPE, user=user
                ),
            }
        }
    )
    context.update(action_context)
    rendered_params = render_values(immutable_parameters, context)

    for exec_params in multiple_execution_parameters:
        overriden = [
            param for param in immutable_parameters.keys() if param in exec_params
        ]
        if overriden:
            raise ValueError(
                "Immutable arguments cannot be overriden: {}".format(
                    ",".join(overriden)
                )
            )

        exec_params.update(rendered_params)

    return multiple_execution_parameters

    Inject immutable parameters from the alias definiton on the execution parameters.
    Jinja expressions will be resolved.
    
st2common/st2common/models/utils/action_alias_utils.py