The ADAPT Standard Plugin is a transitional tool to assist the industry in migrating from the ADAPT Framework to the ADAPT Standard. It converts the in-memory ADAPT Framework ApplicationDataModel
into serialized data that conforms to the latest version of the ADAPT Standard.
The ADAPT Framework is a .Net plugin toolkit that allows data producers to provide software to data consumers to read proprietary files.
The ADAPT Standard is a replacement that encourages data producers to keep proprietary files in-house and provide consumers with a readable format that requires no software dependencies.
See the StandardPluginHarness for a simple example.
The ADAPT Framework was largely undocumented. As such, different plugin implementers used data elements in different ways. To convert data, plugin users will need to specify properties based on the source plugin so that data can be interpreted correctly. Below are known settings for various plugins. Data originating in the ADAPT Framework ADM plugin will need to account for the original source of the data.
Some plugins report SpatialRecord.Geometry as the point of the GNSS Receiver, and others report it as the Implement Reference Point. To correctly map the data, this plugin needs to factor this definition to determine which offsets to apply.
GNSS Receiver
- ISOv4Plugin
- Precision Planting
Implement Reference Point
- Climate
- CNH
- John Deere
Plugins take different approaches on how to use the DeviceElementUse.Depth concept in the Framework.
DeviceElementHierarchy
- CNH
- ISOv4Plugin
- John Deere
- Precision Planting
Machine0Implement1Section2
- Climate
ADAPT Standard Version 2.0 released in June 2025. The plugin converts to ADAPT Standard Version 2.0 and intends only to convert to the latest version of the specification at any time.
The following tables summarize plugin implementation where the ADAPT Framework and ADAPT Standard diverge.
ADAPT Framework | ADAPT Standard |
---|---|
*.Description |
*.Name The ADAPT Framework used Name and Description interchangeably. The ADAPT Standard treats name as a short name and description as an extended description. |
ContextItem.Code |
ContextItem.definitionCode |
ContextItem.Value |
ContextItem.valueText |
ContextItem.NestedItems |
ContextItem.contextItems |
TimeScope.TimeStamp1 |
TimeScope.start |
TimeScope.TimeStamp2 |
TimeScope.end |
TimeScope.DateContext.CropSeason |
Season |
TimeScope.DateContext.TimingEvent |
Not in ADAPT Standard |
TimeScope.Location1 and Location2 |
Not in ADAPT Standard |
Any types not mappable to https://github.com/ADAPT/Standard/blob/main/adapt-data-type-definitions.json | CustomDataTypeDefinition |
ADAPT Framework | ADAPT Standard |
---|---|
Company and Person |
Party |
PersonRole |
PartyRole |
Field.GrowerId |
Field.farmId -> Farm.growerId The ADAPT Standard does not allow Fields to map to Growers without Farm objects. |
Farm.ContactInfo |
Farm.partyId -> Party.contactInfo |
Grower.ContactInfo |
Grower.partyId -> Party.contactInfo |
ContactInfo except ContactInfo.Contacts |
ContactInfo.addressContactMethod |
ContactInfo.Contacts |
ContactInfo.telecommunicationContactMethods |
Most of the Device/Equipment model is omitted from the ADAPT Standard. The ADAPT Standard does not model data from the equipment's point-of-view.
ADAPT Framework | ADAPT Standard |
---|---|
DeviceModel.ManufacturerId |
DeviceModel.brandId -> Brand.manufacturerId |
DeviceModel.SeriesId |
DeviceModel.devicesSeries |
DeviceElement |
Device |
DeviceElement.BrandId , ManufacturerId , SeriesId |
Mapped via Device.deviceModelId |
Connector , HitchPoint , EquipmentConfiguration , DeviceConfiguration and its child types |
Implement geometry information is intentionally omitted in favor of derived coverage polygons. |
DeviceElementUse |
Hierarchial equipment information is necessarily flattened on the Operation to the field's point-of-view. |
ADAPT Framework | ADAPT Standard |
---|---|
Shapes types |
WKT for unattributed geometries. GeoParquet for attributed geometries |
FieldBoundary.SpatialData |
FieldBoundary.boundary.geometry |
CropZone.BoundingRegion |
CropZone.boundary.geometry |
DrivenHeadland |
Headland |
ConstantOffsetHeadland |
Omitted. Headlands in ADAPT Standard require Geometries. |
ADAPT Framework | ADAPT Standard |
---|---|
Product.Status, Form, Type |
Product.productStatusCode, productFormCode, productTypeCode |
CropNutritionProduct.IsManure |
Product.productTypeCode = FERTILIZER_ORGANIC |
CropProtectionProduct.Biological |
Product.contextItems definitionCode = HasBiological |
CropProtectionProduct.Organophosphate |
Product.contextItems definitionCode = HasOrganophosphate |
CropProtectionProduct.Carbamate |
Product.contextItems definitionCode = HasCarbamate |
CropVarietyProduct |
Product.productTypeCode = SEED or PLANT |
CropVarietyProduct.CropId |
Product.cropId |
CropVarietyProduct.Traits |
Product.traits |
CropVarietyProduct.GeneticallyEnhanced |
Product.contextItems definitionCode = CropVarietyIsGeneticallyEnhanced |
HarvestedCommmodityProduct |
Product.productTypeCode = HARVESTED_PRODUCT |
MixProduct |
Product with non-empty ProductComponents |
ProductComponent.IngredientID |
ProductComponent.productId or ProductComponent.ingredientId |
ProductComponent.Quantity |
ProductComponent.amount |
ProductComponent.IsProduct |
ProductComponent.productId populated |
Ingredient |
ProductComponent.ingredientId |
ActiveIngredient |
IngredientId.isActiveIngredient = true |
InertIngredient |
IngredientId.isActiveIngredient = false |
CropNutritionIngredient.IngredientCode |
IngredientId.ingredientCode |
Trait.CropIds |
Trait is a child of a specific Product.productTypeCode = SEED or PLANT with a required CropId . |
ADAPT Framework | ADAPT Standard |
---|---|
Prescription , WorkItem and WorkItemOperation |
WorkOrder.operation |
Prescription.OperationType |
WorkOrder.operation.operationTypeCode |
Prescription.RxProductLookups |
WorkOrder.operation.variables specifying a ProductId |
RasterGridPrescription |
WorkOrder.operation with GeoTIFF .tiff file export |
RasterPrescription.Rates (RxCellLookup ) |
Individual GeoTIFF pixels |
VectorPrescription |
WorkOrder.operation with GeoParquet .parquet file export |
VectorPrescription.RxShapeLookups |
Individual GeoParquet features |
ManualPrescription.ProductUses |
WorkOrder.operation.summaryValues |
ADAPT Framework | ADAPT Standard |
---|---|
LoggedData |
WorkRecords grouped by field id and like Operations (see next) |
OperationData |
WorkRecord.operations grouped by like types, products and start times occurring within 36 hours |
OperationData.OperationType |
Operation.operationTypeCode |
OperationData.GetSpatialRecords() |
GeoParquet file identified by Operation.spatialRecordsFile |
OperationData.GetDeviceElementUses() and OperationData.maxDepth |
Hierarchial equipment information is necessarily "flattened" into data from the field's point-of-view |
DeviceElementUse.GetWorkingDatas() |
Operation.variables |
WorkingData.Representation.Code |
Variable.definitionCode |
WorkingData.Representation.Code = vrProductIndex |
Variable.productId |
SpatialRecord |
Individual GeoParquet feature |
SpatialRecord.GetMeterValue(WorkingData) |
Individual GeoParquet feature attribute value mapped via Variable.geoParquetColumnName |
Load |
Operation.harvestLoadIdentifier + Operation.summaryValues |
With decade of production usage behind us, we can look at some of the ADAPT Framework model as well-intentioned theory that never saw usage. Some of this model has not yet or will not be added to the ADAPT Standard.
- Observations: Observations and Measurements is a likely future extension to the ADAPT Standard
- Irrigation: Not known to be adopted.
- Containers and Packaged Products: Products in ADAPT are models and not instances. Supply chain and traceability are not part of the ADAPT Standard at this time.
- Reference Layers: Included in the ADAPT Standard but not known to be used in the Framework
- Plans & Recommendations: While these document types persist in the ADAPT Standard, no known source ADAPT Framework plugin populates these types.
- Sensor Latencies & Calibration Factors: The ADAPT Standard requires that any known calibration/sensor latencies be applied in the data and not reported separately for the data consumer to handle. Many equipment OEM plugins take this approach by default and any calibration data is included in the Framework for information only. Any Framework data that does not handle calibration / flow delay will be technically out of spec for the ADAPT Standard as output by this plugin. To the limited extent such data can be identified and adjusted, this is a known issue.
- Pivot Guidance Patterns Defined as Three Points on a Circle: Pivot guidance patterns are not often seen, and 3-point definitions are rarer. For the plugin to perform such a conversion we would need to add code to reproject coordinates, and this sits open as a known issue.