def METHOD_NAME(board):
    """
    :type board: str
    :param board: board xml text
    """
    board_xml = etree.fromstring(board)
    def get_enum(source, options, option_names, obj_type):
        elements = [str(x) for x in elementpath.select(source, options) if x]
        element_names = [str(x) for x in elementpath.select(source, option_names) if x]
        elements = list(set(zip(elements, element_names)))
        if not elements:
            elements = [('', '')]
        # TODO: Add more converters if needed
        enum_type_convert = {'integer': lambda x: int(x) if x else 0}
        if obj_type in enum_type_convert.keys():
            elements = [(enum_type_convert[obj_type](x[0]), x[1]) for x in elements]
        return elements
    def dynamic_enum(**enum_setting):
        # value from env
        function, source = [
            {"get_enum": get_enum, "board_xml": board_xml}[enum_setting[key]]
            for key in ['function', 'source']
        ]
        # value from given
        selector, name_selector, sorted_func, obj_type = [enum_setting[key] for key in ['selector', 'name-selector', 'sorted', 'type']]
        # get enum data
        enum = function(source, selector, name_selector, obj_type)
        if sorted_func:
            fn = eval(sorted_func)
            enum = sorted(enum, key=lambda x: fn(x[0]))
        return zip(*enum)
    def dynamic_enum_apply(obj):
        # get json schema enum obj
        if 'enum' in obj and isinstance(obj['enum'], dict):
            enum_setting = obj['enum']
            # check enum obj type
            if enum_setting['type'] == 'dynamicEnum':
                enum_setting['type'] = obj.get('type', '')
                # replace json schema obj enum field data
                enum, enum_names = dynamic_enum(**enum_setting)
                obj['enum'] = enum
                obj['enumNames'] = enum_names
        return obj
    data = json.loads(scenario_json_schema, object_hook=dynamic_enum_apply)
    form_schemas = {}
    tab_types = ['HV', 'PreLaunchedVM', 'ServiceVM', 'PostLaunchedVM']
    form_types = ['BasicConfigType', 'AdvancedConfigType']
    for tab_type in tab_types:
        form_schemas[tab_type] = {}
        for form_type in form_types:
            form_schema = deepcopy(data)
            current_form_type_schema_obj = form_schema['definitions'][f'{tab_type}{form_type}']
            for key in ['type', 'required', 'properties']:
                if key == 'required' and key not in current_form_type_schema_obj:
                    form_schema[key] = []
                    continue
                form_schema[key] = current_form_type_schema_obj[key]
            form_schemas[tab_type][form_type] = form_schema
    return form_schemas