def deconstruct_keyval_reporting(entry):
    """
    Takes a reporting of the form '{colname}:{oldval}->{newval}' and returns colname, oldval, newval.

    Args:
        entry, str. A string of the form '{colname}:{oldval}->{newval}'. colname should be an all upper case column name.
                    oldval and newval can include any string characters except the specific combination "->".

    Returns:
        key, str. The string that precedes the initial colon. The name of the column being reported.
        val1, str. The string after the initial colon and preceding the '->'. The original value of the column.
        val2, str. The string after the '->'. The value that the original was changed to.
    """
    ## Ensure that the rudimentary characteristics are there
    if ':' not in entry or '->' not in entry:
        raise ValueError("Entry must be of the form {key}:{oldval}->{newval}. Exiting")
    ## Get the key left of colon
    entries = entry.split(':')
    key = entries[0]
    ## The values could potentially have colon's. This allows for that
    values = ':'.join(entries[1:])
    ## Two values should be separated by text arrow
    val1,val2 = values.split("->")
    return key, val1, val2