Atlassian Confluence Modeling Rule

Modeling Rule

Atlassian Confluence Cloud

Details

IDAtlassian_Confluence_ModelingRule
From Version8.4.0

Rules (XIF)

[MODEL: dataset = "atlassian_confluence_raw"]
alter
    ext_changed_values_name = arraystring(arraymap(to_string(changedvalues) -> [], "@element" -> name),", "),
    ext_changed_values_old_value = arraystring(arraymap(to_string(changedvalues) -> [], "@element" -> oldValue),", "),
    ext_changed_values_new_value = arraystring(arraymap(to_string(changedvalues) -> [], "@element" -> newValue),", "),
    ext_associated_objects_name = arraystring(arraymap(associatedobjects -> [],"@element" -> name),", "),
    ext_associated_objects_type = arraystring(arraymap(associatedobjects -> [],"@element" -> objectType),", "),
    ext_affected_object_name = affectedobject -> name,
    ext_affected_object_type = affectedobject -> objectType
| alter
    to_xdm_event_description = to_json_string(object_create("Changed_Values_Name",ext_changed_values_name, "Changed_Values_Old_Value", ext_changed_values_old_value ,"Changed_Values_New_Value",ext_changed_values_new_value,"Description",description,"Affected_Object_Name",ext_affected_object_name,"Affected_Object_Type",ext_affected_object_type,"Sys_Admin",sysadmin,"Super_Admin",superadmin)),
    parsed_fields_for_merge = object_create("Changed_Values_Old_Value",parsed_fields_changed_values_old ,"Changed_Values_New_Value",parsed_fields_changed_values_new),
    check_type_user_name = if(ext_affected_object_type = "User",ext_affected_object_name,ext_associated_objects_type = "User",ext_associated_objects_name,null),
    check_type_group = if(ext_affected_object_type = "Group", ext_affected_object_name,ext_associated_objects_type = "Group",ext_associated_objects_name,null)
| alter
    to_xdm_event_description = object_merge(to_xdm_event_description ,parsed_fields_for_merge),
    check_for_empty_string_resource_before_value = if(ext_changed_values_old_value ~= "^[\,\s]+$",null,ext_changed_values_old_value),
    check_for_empty_string_resource_value = if(ext_changed_values_new_value ~= "^[\,\s]+$",null,ext_changed_values_new_value)
| alter 
    xdm.source.user.username = author -> displayName,
    xdm.source.user.identifier = author -> accountId,
    xdm.event.operation = summary,
    xdm.event.type = category,
    xdm.event.description = to_xdm_event_description,
    xdm.target.resource.value = check_for_empty_string_resource_value,
    xdm.target.resource_before.value = check_for_empty_string_resource_before_value,
    xdm.source.ipv4 = remoteaddress,
    xdm.target.resource.name = coalesce(ext_associated_objects_name,ext_affected_object_name) ,
    xdm.target.resource.type = coalesce(ext_associated_objects_type,ext_affected_object_type),
    xdm.target.user.username = check_type_user_name,
    xdm.target.user.groups = arraycreate(check_type_group);

Schema

atlassian_confluence_raw

Field Type Array?
affectedobject string
associatedobjects string
author string
category string
changedvalues string
description string
parsed_fields_changed_values_new string
parsed_fields_changed_values_old string
remoteaddress string
summary string
superadmin string
sysadmin string
Raw JSON
{
    "atlassian_confluence_raw": {        
        "changedvalues": {
            "type": "string",
            "is_array": false
        },
        "associatedobjects": {
            "type": "string",
            "is_array": false
        },
        "affectedobject": {
            "type": "string",
            "is_array": false
        },
        "sysadmin": {
            "type": "string",
            "is_array": false
        },
        "superadmin": {
            "type": "string",
            "is_array": false
        },
        "parsed_fields_changed_values_old": {
            "type": "string",
            "is_array": false
        },
        "parsed_fields_changed_values_new": {
            "type": "string",
            "is_array": false
        },
        "description": {
            "type": "string",
            "is_array": false
        },
        "author": {
            "type": "string",
            "is_array": false
        },
        "summary": {
            "type": "string",
            "is_array": false
        },
        "category": {
            "type": "string",
            "is_array": false
        },
        "remoteaddress": {
            "type": "string",
            "is_array": false
        }
    }
}