Advanced Scenario - Hatchery and Salmon Farm (w/ Feeding and Treatments)

This scenario covers if you have traceability back to the Hatchery. It also includes examples of how to record long-running transformations, feeding, and treatments.

Details

A couple of details about this scenario:

  • This scenario uses a "Long Transformation" to record when the ponds are stocked. The reason you might do this is to know when the ponds were stocked.
    • If you didn't care about when the ponds were stocked, then you would simply record a single Transformation event (Hatching / Farm Harvest) and list everything as inputs on that one event.
  • "Long Transformations" are connected via the transformationID on the various transformation events.
  • This scenario assumes that the Hatchery does not have traceability back to the broodstock facility.
  • This scenario assumes that there is no traceability back to the feed mill. This will assume that the Hatchery and Salmon Farm will just use create an event to bring the feed into their inventory.

Master Data

In order to model this scenario we will need the following master data:

  • Product Definitions
    • Broodstock
    • Fryling
    • Raw Atlantic Salmon
    • Vegetarian Fish Food
  • Locations
    • Hatchery
    • Salmon Farm
  • Trading Parties
    • Hatchery Company
    • Sweet Fresh Salmon Farm

EPCIS JSON-LD (Event Data)

{
"@context": [
"https://ref.gs1.org/standards/epcis/epcis-context.jsonld",
{
"xsi": "http://www.w3.org/2001/XMLSchema-instance/"
},
{
"sbdh": "http://www.unece.org/cefact/namespaces/StandardBusinessDocumentHeader/"
},
{
"gdst": "https://traceability-dialogue.org/epcis/"
}
],
"type": "EPCISDocument",
"creationDate": "2001-12-17T09:30:47.0000000+00:00",
"schemaVersion": "2.0",
"sender": "test",
"receiver": "test",
"instanceIdentifier": "9999",
"epcisBody": {
"eventList": [
{
"type": "ObjectEvent",
"eventTime": "2021-08-23T20:01:59.9990000+00:00",
"eventTimeZoneOffset": "+00:00",
"eventID": "urn:uuid:66c8ecaa-816c-467a-b71a-0dd719bafd79",
"epcList": [],
"action": "OBSERVE",
"bizStep": "shipping",
"disposition": "active",
"bizLocation": {
"id": "urn:gdst:example.org:location:loc:hatchery.9"
},
"quantityList": [
{
"epcClass": "urn:gdst:example.org:product:lot:class:hatchery.3.sf-08212021",
"quantity": 10000.0,
"uom": "KGM"
}
],
"sourceList": [
{
"type": "owning_party",
"source": "urn:gdst:example.org:party:hatchery.1"
}
],
"destinationList": [
{
"type": "owning_party",
"destination": "urn:epc:id:sgln:08600031303.1.0"
}
],
"gdst:productOwner": "urn:epc:id:sgln:08600031303.1.0",
"cbvmda:informationProvider": "urn:gdst:example.org:party:hatchery.1"
},
{
"type": "ObjectEvent",
"eventTime": "2021-08-25T20:02:35.2310000+00:00",
"eventTimeZoneOffset": "+00:00",
"eventID": "urn:uuid:d8768dcb-34fd-4273-9be0-01eab5b3eea1",
"epcList": [],
"action": "OBSERVE",
"bizStep": "receiving",
"disposition": "active",
"bizLocation": {
"id": "urn:epc:id:sgln:08600031303.5.0"
},
"quantityList": [
{
"epcClass": "urn:gdst:example.org:product:lot:class:hatchery.3.sf-08212021",
"quantity": 10000.0,
"uom": "KGM"
}
],
"gdst:productOwner": "urn:epc:id:sgln:08600031303.1.0",
"cbvmda:informationProvider": "urn:epc:id:sgln:08600031303.1.0"
},
{
"type": "TransformationEvent",
"eventTime": "2021-08-01T13:00:00.0000000+00:00",
"eventTimeZoneOffset": "+00:00",
"eventID": "urn:uuid:cae8f758-4658-4959-b827-2647cd3a783c",
"inputQuantityList": [
{
"epcClass": "urn:gdst:example.org:product:lot:class:hatchery.2.bs-06012021",
"quantity": 10000.0,
"uom": "KGM"
}
],
"transformationID": "hatching_08012021",
"bizStep": "urn:gdst:bizstep:farmStocking",
"disposition": "active",
"bizLocation": {
"id": "urn:gdst:example.org:location:loc:hatchery.9"
},
"cbvmda:informationProvider": "urn:gdst:example.org:party:hatchery.1",
"gdst:productOwner": "urn:gdst:example.org:party:hatchery.1"
},
{
"type": "TransformationEvent",
"eventTime": "2021-08-21T19:39:32.6460000+00:00",
"eventTimeZoneOffset": "+00:00",
"eventID": "urn:uuid:7f01a70b-bfdd-4e2b-a6db-665f79f65bce",
"inputQuantityList": [
{
"epcClass": "urn:gdst:example.org:product:lot:class:hatchery.5.bff-03012021",
"quantity": 100.0,
"uom": "KGM"
},
{
"epcClass": "urn:gdst:example.org:product:lot:class:hatchery.100.bst-02012021",
"quantity": 1.0,
"uom": "KGM"
},
{
"epcClass": "urn:gdst:example.org:product:lot:class:hatchery.5.bff-01012021",
"quantity": 5.0,
"uom": "KGM"
}
],
"outputQuantityList": [
{
"epcClass": "urn:gdst:example.org:product:lot:class:hatchery.3.sf-08212021",
"quantity": 10000.0,
"uom": "KGM"
}
],
"transformationID": "hatching_08012021",
"bizStep": "urn:gdst:bizstep:hatching",
"disposition": "active",
"bizLocation": {
"id": "urn:gdst:example.org:location:loc:hatchery.9"
},
"ilmd": {

},
"cbvmda:informationProvider": "urn:gdst:example.org:party:hatchery.1",
"gdst:productOwner": "urn:gdst:example.org:party:hatchery.1"
},
{
"type": "TransformationEvent",
"eventTime": "2021-09-01T20:03:14.7980000+00:00",
"eventTimeZoneOffset": "+00:00",
"eventID": "urn:uuid:53a09f26-1bf4-44e2-b201-4104fac26241",
"inputQuantityList": [
{
"epcClass": "urn:gdst:example.org:product:lot:class:hatchery.3.sf-08212021",
"quantity": 1000.0,
"uom": "KGM"
}
],
"transformationID": "salmon_pond2_09012021",
"bizStep": "urn:gdst:bizstep:farmStocking",
"disposition": "active",
"bizLocation": {
"id": "urn:epc:id:sgln:08600031303.5.0"
},
"cbvmda:informationProvider": "urn:epc:id:sgln:08600031303.1.0",
"gdst:productOwner": "urn:epc:id:sgln:08600031303.1.0"
},
{
"type": "TransformationEvent",
"eventTime": "2021-09-29T20:06:42.6220000+00:00",
"eventTimeZoneOffset": "+00:00",
"eventID": "urn:uuid:c07b79e7-fe95-4f42-82b3-461131633b56",
"inputQuantityList": [
{
"epcClass": "urn:gdst:example.org:product:lot:class:hatchery.100.ftss-04012021",
"quantity": 1.0,
"uom": "KGM"
},
{
"epcClass": "urn:gdst:example.org:product:lot:class:sweetsalmonfarm.1.avff-08272021",
"quantity": 10.0,
"uom": "KGM"
}
],
"outputQuantityList": [
{
"epcClass": "urn:epc:class:lgtin:08600031303.00.ras-ss-09292021-02",
"quantity": 10000.0,
"uom": "KGM"
}
],
"transformationID": "salmon_pond2_09012021",
"bizStep": "urn:gdst:bizstep:farmHarvest",
"disposition": "active",
"bizLocation": {
"id": "urn:epc:id:sgln:08600031303.5.0"
},
"gdst:productOwner": "urn:epc:id:sgln:08600031303.1.0",
"cbvmda:informationProvider": "urn:epc:id:sgln:08600031303.1.0"
}
]
}
}

GS1 Web Vocab JSON-LD (Master Data)

[
{
"@context": {
"cbvmda": "urn:epcglobal:cbvmda:mda",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"gs1": "http://gs1.org/voc/",
"@vocab": "http://gs1.org/voc/",
"gdst": "https://traceability-dialogue.org/vocab/"
},
"@type": "gs1:Product",
"gtin": "urn:gdst:example.org:product:class:hatchery.2",
"productName": [
{
"@language": "en-US",
"@value": "Broodstock"
}
],
"cbvmda:speciesForFisheryStatisticsPurposesName": [
"salmo salar"
]
},
{
"@context": {
"cbvmda": "urn:epcglobal:cbvmda:mda",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"gs1": "http://gs1.org/voc/",
"@vocab": "http://gs1.org/voc/",
"gdst": "https://traceability-dialogue.org/vocab"
},
"@type": "gs1:Product",
"gtin": "urn:gdst:example.org:product:class:hatchery.3",
"productName": [
{
"@language": "en-US",
"@value": "Salmon Fingerling"
}
],
"cbvmda:speciesForFisheryStatisticsPurposesName": [
"salmo salar"
]
},
{
"@context": {
"cbvmda": "urn:epcglobal:cbvmda:mda",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"gs1": "http://gs1.org/voc/",
"@vocab": "http://gs1.org/voc/",
"gdst": "https://traceability-dialogue.org/vocab/"
},
"@type": "gs1:Product",
"gtin": "urn:epc:idpat:sgtin:08600031303.00",
"productName": [
{
"@language": "en-US",
"@value": "Raw Antlantic Salmon"
}
],
"cbvmda:speciesForFisheryStatisticsPurposesName": [
"salmo salar"
]
},
{
"@context": {
"cbvmda": "urn:epcglobal:cbvmda:mda",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"gs1": "http://gs1.org/voc/",
"@vocab": "http://gs1.org/voc/",
"gdst": "https://traceability-dialogue.org/vocab/"
},
"@type": "gs1:Product",
"gtin": "urn:gdst:example.org:product:class:sweetsalmonfarm.1",
"productName": [
{
"@language": "en-US",
"@value": "Adult Fish Feed "
}
]
},
{
"@context": {
"cbvmda": "urn:epcglobal:cbvmda:mda",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"gs1": "http://gs1.org/voc/",
"@vocab": "http://gs1.org/voc/",
"gdst": "https://traceability-dialogue.org/vocab/"
},
"@type": "gs1:Product",
"gtin": "urn:gdst:example.org:product:class:hatchery.5",
"productName": [
{
"@language": "en-US",
"@value": "Broodstock Fish Feed"
}
]
},
{
"@context": {
"cbvmda": "urn:epcglobal:cbvmda:mda",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"gs1": "http://gs1.org/voc/",
"@vocab": "http://gs1.org/voc/",
"gdst": "https://traceability-dialogue.org/vocab/"
},
"@type": "gs1:Product",
"gtin": "urn:gdst:example.org:product:class:hatchery.100",
"productName": [
{
"@language": "en-US",
"@value": "Fish Treatment"
}
]
},
{
"@context": {
"cbvmda": "urn:epcglobal:cbvmda:mda",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"gs1": "http://gs1.org/voc/",
"@vocab": "http://gs1.org/voc/",
"gdst": "https://traceability-dialogue.org/vocab/"
},
"@type": "gs1:Place",
"globalLocationNumber": "urn:gdst:example.org:location:loc:hatchery.9",
"name": [
{
"@language": "en-US",
"@value": "Hatchery"
}
],
"address": {
"@type": "gs1:PostalAddress",
"streetAddress": [
{
"@language": "en-US",
"@value": "4924 268th St E"
}
],
"addressLocality": [
{
"@language": "en-US",
"@value": "Spanaway"
}
],
"addressRegion": [
{
"@language": "en-US",
"@value": "WA"
}
],
"countyCode": "US"
}
},
{
"@context": {
"cbvmda": "urn:epcglobal:cbvmda:mda",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"gs1": "http://gs1.org/voc/",
"@vocab": "http://gs1.org/voc/",
"gdst": "https://traceability-dialogue.org/vocab/"
},
"@type": "gs1:Place",
"globalLocationNumber": "urn:epc:id:sgln:08600031303.5.0",
"name": [
{
"@language": "en-US",
"@value": "Sweet Salmon Farm"
}
],
"address": {
"@type": "gs1:PostalAddress",
"addressLocality": [
{
"@language": "en-US",
"@value": "Union Gap"
}
],
"addressRegion": [
{
"@language": "en-US",
"@value": "WA"
}
],
"countyCode": "US"
}
},
{
"@context": {
"cbvmda": "urn:epcglobal:cbvmda:mda",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"gs1": "http://gs1.org/voc/",
"@vocab": "http://gs1.org/voc/",
"gdst": "https://traceability-dialogue.org/vocab/"
},
"@type": "gs1:Organization",
"globalLocationNumber": "urn:gdst:example.org:party:hatchery.1",
"organizationName": [
{
"@language": "en-US",
"@value": "Hatchery Company"
}
]
},
{
"@context": {
"cbvmda": "urn:epcglobal:cbvmda:mda",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"gs1": "http://gs1.org/voc/",
"@vocab": "http://gs1.org/voc/",
"gdst": "https://traceability-dialogue.org/vocab/"
},
"@type": "gs1:Organization",
"globalLocationNumber": "urn:epc:id:sgln:08600031303.1.0",
"organizationName": [
{
"@language": "en-US",
"@value": "Sweet Salmon Farm"
}
]
}
]


How did we do?


Powered by HelpDocs (opens in a new tab)

Powered by HelpDocs (opens in a new tab)