title: Implementation Plan — Secondary Collection Service audience: developer keywords: Landsbankinn, Secondary Collection, milliinnheimta, QuerySecondaryCollectionClaims, SecondaryCollectionReturnClaim, IOBS, TS 163, implementation plan
Add support for the Landsbankinn IcelandicOnlineBankingSecondaryCollectionClaims service (milliinnheimta / secondary collection, handbook TS 163).
| Item | Value |
|---|---|
| Endpoint | https://b2b.fbl.is/IcelandicOnlineBankingSecondaryCollectionClaims.svc (live, HTTP 200) |
| SOAPAction prefix | http://IcelandicOnlineBanking/2012/08/01 (same as Claims) |
| Request body namespace | wrapper in …/2013/10/15/SecondaryCollectionClaims, types in …/2013/10/15/ClaimTypes |
| Binding | WCF BasicHttpBinding (SOAP 1.1) — handled by Lbi Live Transport |
| Handbook | TS 163 — Secondary Collection; XSD IcelandicOnlineBankingClaimsTypes.xsd |
This service reuses the ClaimTypes schema. The existing Lbi Claims Builder, Lbi Claims Parser, and claim buffer tables apply directly — most work is routing to a second endpoint plus the four secondary-collection-specific operations.
It exposes the full claim operation set plus four secondary-collection-specific ones. Decision needed (see Open questions): ship only the unique four, or the full set against this endpoint. The four that have no equivalent in the existing Claims integration:
| Operation | SOAPAction | Request | Response |
|---|---|---|---|
QuerySecondaryCollectionClaims | …/2012/08/01/QuerySecondaryCollectionClaims | Query (SecondaryCollectionClaimsQuery) | QueryClaimsResult |
QuerySecondaryCollectionPayments | …/2012/08/01/QuerySecondaryCollectionPayments | Query (SecondaryCollectionPaymentsQuery) | QueryPaymentsResult |
SecondaryCollectionReturnClaim | …/2012/08/01/SecondaryCollectionReturnClaim | Claim (ClaimTypes:Claim) | ClaimOperationResult |
SecondaryCollectionReturnClaims | …/2012/08/01/SecondaryCollectionReturnClaims | Claims (ArrayOfClaim) | string (async op id) |
Shared claim operations also exposed on this endpoint (same shapes as the Claims service): QueryClaims, QueryClaim, AlterClaim(s), CancelClaim(s), GetClaimOperationResult, QueryClaimTransactions.
QueryClaimsResult, QueryPaymentsResult, ClaimOperationResult, Claim, and ClaimKey are the same ClaimTypes the current Claims integration already parses — reuse Lbi Claims Parser and the existing claim buffer tables.
| Message type | Operation | Direction | Access gate |
|---|---|---|---|
Landsbankinn.SecCollection.QueryClaims | QuerySecondaryCollectionClaims | Outbound | No — read |
Landsbankinn.SecCollection.QueryPayments | QuerySecondaryCollectionPayments | Outbound | No — read |
Landsbankinn.SecCollection.ReturnBatch | SecondaryCollectionReturnClaims | Outbound | Yes — write |
Landsbankinn.SecCollection.GetOperationResult | GetClaimOperationResult | Outbound | No — read |
ReturnClaims is async (returns an operation id), so poll it with Landsbankinn.SecCollection.GetOperationResult — the same pattern as the existing claim batch operations. Identifiers are Locked = true.
| Concern | Approach |
|---|---|
| Build claim/key bodies | Reuse Lbi Claims Builder for the shared shapes; add sec-collection query/return builders |
| Parse claim/payment results | Reuse Lbi Claims Parser and existing claim/payment buffer tables |
| Route to the sec-collection endpoint | New endpoint path + Lbi Operation values; ServiceUrlFor maps the new ops to it |
| SOAPAction | Same 2012/08/01 prefix; add cases for the new operation suffixes |
IDs continue at 72363+ (after the Documents plan if both proceed) — see the ID-range prerequisite in API_Gap_Analysis.md.
**Services layer — src/Services/SecondaryCollection/**
| Object | Name | Role |
|---|---|---|
| Codeunit | Lbi Sec Collection Builder | Build QuerySecondaryCollection* and Return* bodies (reuse Lbi Claims Builder for Claim/Key fragments) |
| Codeunit | Lbi Sec Collection Mgt | Orchestrate build → Lbi Client.SendRequest → Lbi Claims Parser |
| Table | Lbi Sec Col Query Buf (temp) | Query filter input (claimant, date span, status) — if not covered by existing claim query buffers |
Reuse existing claim/payment buffer tables and Lbi Claims Parser for responses.
**Message-type layer — src/MessageTypes/SecondaryCollection/**
| Object | Name |
|---|---|
| Codeunit (Impl + Help) | Lbi SecCol QueryClaims Impl / … Help |
| Codeunit (Impl + Help) | Lbi SecCol QueryPmt Impl / … Help |
| Codeunit (Impl + Help) | Lbi SecCol ReturnBatch Impl / … Help |
| Codeunit (Impl + Help) | Lbi SecCol GetOpResult Impl / … Help |
Access gate + permissions
| Object | Name | Note |
|---|---|---|
| Table | Lbi Sec Col Gate | Gate the return (write) operation |
| PermissionSet | Lbi Sec Col Gate | Grants the gate |
Wire through Lbi Access Gate (mirror Lbi Claim Pmt Gate); add to Lbi Banki Full.
Lbi Operation enum** — add SecColQueryClaims, SecColQueryPayments, SecColReturnClaims, SecColGetOperationResult (reuse the existing GetClaimOperationResult only if it routes to the Claims endpoint; secondary collection needs its own endpoint, so add a distinct value).
Lbi Client.SoapActionFor** — reuse ClaimsActionPrefixTok (…/2012/08/01);add the four suffixes.
Lbi Endpoint** — add `SecCollectionServicePathTok = '/IcelandicOnlineBankingSecondaryCollectionClaims.svc', an accessor, and the new operations in ServiceUrlFor`.
Lbi Cloud Event Msg Type enum extension** — add the four message-type values.Help.Landsbankinn.Get** overview — update count and list.test/test/LbiSecCollectionTests.Codeunit.alQuerySecondaryCollectionClaims / …Payments bodies carry the correct wrapper and ClaimTypes-qualified query fields.
Claims endpoint (assert via Lbi Endpoint.ServiceUrlFor).
ReturnBatch returns an operation id; GetOperationResult polls it.
SecCollection.ReturnBatch without permission.operations? (Decides whether to ship the minimum-viable four or the full set.)
SecondaryCollectionClaimsQuery and SecondaryCollectionPaymentsQuery filter fields.GetClaimOperationResult on this endpoint shares the same operation-id space asthe primary Claims service.
Rough total: ~5 developer-days (less if scope is the four unique operations only), plus live verification once Landsbankinn confirms entitlement for the secondary-collection service.
© Origo – Cloud Events Base Extension