@startuml

class CancelProductOrder {

    cancellationDeniedReason: string
    cancellationReason: string
    cancellationReasonType: CancellationReasonType
    href: string
    id*: string
    state*: MEFChargeableTaskStateType
}

CancelProductOrder *-->"0..*" MEFProductOrderChargeRef : charge
CancelProductOrder *-->"1" MEFProductOrderRef : productOrder
CancelProductOrder *-->"1..*" RelatedContactInformation : relatedContactInformation

class MEFProductOrderChargeRef {

    href: string
    id*: string
}


class CancelProductOrder_Create {

    cancellationReason: string
    cancellationReasonType: CancellationReasonType
}

CancelProductOrder_Create *-->"1" MEFProductOrderRef : productOrder
CancelProductOrder_Create *-->"1..*" RelatedContactInformation : relatedContactInformation


class MEFProductOrderRef {

    productOrderHref: string
    productOrderId*: string
}



class SubUnit {

    subUnitNumber*: string
    subUnitType*: string
}



class RelatedContactInformation {

    emailAddress*: string
    name*: string
    number*: string
    numberExtension: string
    organization: string
    role*: string
}

RelatedContactInformation *--> FieldedAddressRepresentation : postalAddress
class FieldedAddressRepresentation {

    streetNr: string
    streetNrSuffix: string
    streetNrLast: string
    streetNrLastSuffix: string
    streetPreDirection: string
    streetName: string
    streetType: string
    streetPostDirection: string
    poBox: string
    locality: string
    city: string
    postcode: string
    postcodeExtension: string
    stateOrProvince: string
    countryCode: string
    buildingName: string
    privateStreetNumber: string
    privateStreetName: string
    language: string
}

FieldedAddressRepresentation *-->"*" SubUnit : subUnit



enum CancellationReasonType {

    technical
    commercial
}

@enduml
