Rules (XIF)
[MODEL: dataset=monday_monday_raw]
//Target resources extractions
alter
extract_resource_board_name = activity_metadata -> board_name,
extract_resource_value = data -> value{},
extract_resource_previous_value = data -> previous_value{},
extract_resource_asset_id = activity_metadata -> asset_id,
extract_resource_board_id = activity_metadata -> board_id,
extract_resource_asset_holder_id = activity_metadata -> asset_holder_id,
extract_resource_pulse_name = data -> pulse_name,
extract_resource_column_title = data -> column_title,
extract_resource_group_title = data -> group_title
| alter
all_resources_id = if(len(extract_resource_asset_id) > 0 and len(extract_resource_board_id) > 0 and len(extract_resource_asset_holder_id) > 0, concat(extract_resource_asset_id , " ,", extract_resource_board_id , " ,", extract_resource_asset_holder_id),null), // Check if asset_id, board_id and asset_holder_id exist .
asset_and_board_id = if(len(extract_resource_asset_id) > 0 and len(extract_resource_board_id) > 0 and len(extract_resource_asset_holder_id) < 0, concat(extract_resource_asset_id , " ,", extract_resource_board_id),null), // Check if only asset_id and board_id exist.
asset_and_holder_id = if(len(extract_resource_asset_id) > 0 and len(extract_resource_board_id) < 0 and len(extract_resource_asset_holder_id) > 0, concat(extract_resource_asset_id , " ,", extract_resource_asset_holder_id),null), // Check if only asset_id and asset_holder_id exist.
board_and_holder_id = if(len(extract_resource_asset_id) < 0 and len(extract_resource_board_id) > 0 and len(extract_resource_asset_holder_id) > 0, concat(extract_resource_board_id, " ,", extract_resource_asset_holder_id),null), // Check if only board_id and asset_holder_id exist.
extract_resource_previous_value = if(extract_resource_previous_value = "{}",null,extract_resource_previous_value) // Check if there is an empty "{}" string and remove it.
/* XDM Fields mapping
Activity Logs: https://developer.monday.com/api-reference/reference/activity-logs
Audit Logs: https://developer.monday.com/api-reference/reference/audit-logs
*/
| alter
xdm.source.user.identifier = to_string(user_id),
xdm.event.operation = if(event = "login", XDM_CONST.OPERATION_TYPE_AUTH_LOGIN, event contains "delete", XDM_CONST.OPERATION_TYPE_DELETE, event contains "create", XDM_CONST.OPERATION_TYPE_CREATE, event contains "update", XDM_CONST.OPERATION_TYPE_UPDATE),
xdm.event.original_event_type = event,
xdm.source.ipv4 = if(is_ipv4(ip_address) = TRUE ,ip_address),
xdm.source.ipv6 = if(is_ipv6(ip_address) = TRUE, ip_address),
xdm.source.user_agent = user_agent,
xdm.source.host.os = concat(os_name , " " , os_version),
xdm.source.host.os_family = if(lowercase(os_name) = "mac os", XDM_CONST.OS_FAMILY_MACOS, lowercase(os_name) = "windows", XDM_CONST.OS_FAMILY_WINDOWS, os_name),
xdm.target.resource.name = coalesce(extract_resource_board_name,extract_resource_column_title,extract_resource_group_title,extract_resource_pulse_name),
xdm.target.resource.value = extract_resource_value,
xdm.target.resource_before.value = extract_resource_previous_value,
xdm.target.file.filename = activity_metadata -> asset_file_name,
xdm.event.type = event_type,
xdm.target.resource.id = coalesce(all_resources_id,asset_and_board_id,asset_and_holder_id,board_and_holder_id,extract_resource_asset_id, extract_resource_board_id, extract_resource_asset_holder_id);