Open APIs

 View Only
  • 1.  "contact" modelling

    TM Forum Member
    Posted 28 days ago
    Hello,
    I'd like to have some direction on modelling of a contact and relationship to Billing Account.
    We are modelling "contact" as PartyIndividual. Which probably makes sense: the contact is a person who plays role "contact" to other parties (customers) or/and billing account (in our case).
    Now, when I get details of the "Customer" I can have all "contacts" listed as part of the JSON payload, since Customer has reference to another Party (contact).
    The same true, when I get details of Billing account. I can get all "contacts" since Billing account has reference to a party.
    The problem is, if I want to get details of the "contact" I use TMF 632 (party management), I can't get reference to billing account as per TMF 632 model. I have to use TMF 629 (customer management), but "contact" is not "customer".
    Any suggestions would be appreciated.
    Thanks,
    Igor Dubrovin

    ------------------------------
    Igor Dubrovin
    Bell Canada
    ------------------------------


  • 2.  RE: "contact" modelling

    TM Forum Member
    Posted 25 days ago
    Hi Igor
    I don't completely follow your problem, sorry.
    Billing Account and Customer both have a relatedParty reference, which you can use to point directly to a Party (Individual), or to a PartyRole (contact, for example). If you want to retrieve the relatedParty details, either you would do GET based on the contents of the relatedParty, or set the depth directive on the original GET of the Billing Account or Customer.
    What is the problem?

    ------------------------------
    Jonathan Goldberg
    Amdocs Management Limited
    Any opinions and statements made by me on this forum are purely personal, and do not necessarily reflect the position of the TM Forum or my employer.
    ------------------------------



  • 3.  RE: "contact" modelling

    TM Forum Member
    Posted 20 days ago
    HI Jonathan,
    The problem is when I get details of the Party Individual (contact), I can't get reference to a Billing Account. Therefore I don't know which billing account the contact is referencing to.
    Hope I clarified the question.
    Sincerely,
    Igor Dubrovin

    ------------------------------
    Igor Dubrovin
    Bell Canada
    ------------------------------



  • 4.  RE: "contact" modelling

    TM Forum Member
    Posted 20 days ago
    Hi Igor
    Thanks for clarifying.
    Most relationships in the Open API model are one-directional. So, for example, if you have obtained a Billing Account it comes built-in with a list of its related parties.
    It would impose severe constraints and dependencies on the model if we were to introduce the reverse relationship, especially for Party and Party Role, which are used by 10s of other entities.
    If you need to know which Billing Accounts refer to an Individual, you would do a search (GET) on BillingAccount, with a filter string such as relatedParty.id=<id of the individual>
    Hope it helps

    ------------------------------
    Jonathan Goldberg
    Amdocs Management Limited
    Any opinions and statements made by me on this forum are purely personal, and do not necessarily reflect the position of the TM Forum or my employer.
    ------------------------------



  • 5.  RE: "contact" modelling

    TM Forum Member
    Posted 20 days ago
    Hi Igor,

    There is indeed not a single call that gets you all the entities that are linked to it.

    However you can search different entities using something like:

    GET /tmf-api/accountManagment/v4/billingAccount?relatedParty.name=<contact>

    Regards

    ------------------------------
    Koen Peeters
    OryxGateway
    ------------------------------



  • 6.  RE: "contact" modelling

    TM Forum Member
    Posted 20 days ago
    Thank you Jonathan and Koen.
    Yes that it is our current approach. I though there are some other more efficient way.
    Regards.

    ------------------------------
    Igor Dubrovin
    Bell Canada
    ------------------------------



  • 7.  RE: "contact" modelling

    TM Forum Member
    Posted 20 days ago
    With this approach, not sure if we can support pagination in API. If, for example, I need o get list of "contacts" for specific account, I need to get "billing account" entity and look for "related party" structure. The pagination has to be done on UI level, not on back end. Is that correct?

    ------------------------------
    Igor Dubrovin
    Bell Canada
    ------------------------------



  • 8.  RE: "contact" modelling

    TM Forum Member
    Posted 20 days ago
    Hi Igor,

    TMF630 describes pagination support for OpenAPI. It applies in principle to all APIs and is done at the server side.

    Regards

    ------------------------------
    Koen Peeters
    OryxGateway
    ------------------------------



  • 9.  RE: "contact" modelling

    TM Forum Member
    Posted 20 days ago
    Moreover - the pagination applies at the top level - the entity being returned by the GET, Billing Account in your example. It is very natural to page through a set of entities.
    Of course there is no magic, the API implementation needs to be developed to support pagination, and with very large result sets (10,000s, 100,000s) you probably wouldn't want to have direct page access, rather cursor-based (key-set) paging.

    But consider what would happen if (hypothetically) you had a direct list of billing account references within Party or PartyRole. You would need somehow to manage pagination at the sub-entity level, which is something that we haven't figured out how to even express in the Open API model and patterns.

    ------------------------------
    Jonathan Goldberg
    Amdocs Management Limited
    Any opinions and statements made by me on this forum are purely personal, and do not necessarily reflect the position of the TM Forum or my employer.
    ------------------------------



  • 10.  RE: "contact" modelling

    TM Forum Member
    Posted 20 days ago
    Agree, because it is sublevel it is not obvious how to do it.

    ------------------------------
    Igor Dubrovin
    Bell Canada
    ------------------------------