Skip to main content

Importing Sales to CamoAg

Overview

The CamoAg platform supports importing sales from AgWare Datalog, mapped to farm sales within the CamoAg platform. The CamoAg platform relies on a standard AgWare stored procedure to generate an XML file for each relevant sale record in UAAR format (AgWare XML spec format). This stored procedure is made available as part of the AgWare software release.

Before you start

Setting up the integration is mostly a conversation between your IT team and CamoAg. The steps below are in the order they need to happen — step 2 in particular is easy to skip and expensive to skip.
1

CamoAg provisions your S3 drop location

CamoAg creates a reserved AWS S3 bucket for your organization and a limited-permission AWS IAM user that can write to it. Your team receives the credentials and the bucket path.
2

Send CamoAg your DataLog land quality type list

Export the list of land quality types configured in your DataLog instance — these are the values that appear as LandQualityTypeName on each sale. This list is specific to your organization.
3

CamoAg maps each land quality type to a CamoAg acreage type

CamoAg configures the mapping on your organization before your first file arrives. See Land types and acreage mapping below.
4

Configure the stored procedure and the file drop

Your IT team configures GetSaleXML to run on a schedule (typically once daily, covering sales changed in the last 24 hours) and writes the resulting files to the S3 bucket. Filter out sales you do not want in CamoAg at this stage — see Sales that should not be sent.Set up a second, parallel export for deleted and withdrawn sales at the same time. GetSaleXML does not produce delete files — see Deleting farm sales.
5

Send a small batch first

Drop a handful of representative sales before enabling the full feed. CamoAg reviews the imported acreage breakdowns with you to confirm the land type mapping is producing the right numbers.
If you want existing sales in CamoAg right away, you can drop a one-time batch of historical sale files alongside (or instead of) the ongoing feed. The file format is identical — there are simply more files at once.This can be done before the daily automation is finished.

Attributes

Each file describes a single sale. The following attributes are read from the UaarSale element. Required — the file is rejected if any of these are missing or invalid: Optional, and used when present: Child elements:
Sale APNs are available in DataLog starting with version 5.9.
Other standard UAAR elements — SaleLandTotals, SaleIncome, SaleExpense, SaleAttachment, SalePhotoPage, SaleRating and so on — are accepted and ignored. There is no need to strip them out of the export.

Land types and acreage mapping

This is the most important configuration step in the integration, and the one most worth getting right before the first real file arrives. AgWare land quality types are free-form and specific to each organization’s DataLog configuration. CamoAg has a fixed set of nine acreage types. Every SaleLandDeeded row on a sale carries a LandQualityTypeName, and CamoAg needs to know which acreage type each of your names corresponds to. The nine CamoAg acreage types are: An example mapping, using land quality type names seen across existing AgWare customers: A few behaviors worth knowing:
  • Matching is exact and case-sensitive. CRP and CRP Land are two separate entries in the mapping, and both need to be configured if both appear in your data.
  • Several AgWare types can map to one CamoAg type. Their acres are summed. In the example above, four Cropland grades combine into a single dryland_acres figure.
  • A SaleLandDeeded row with no Acres attribute is skipped. These occur in real exports, usually as header or subtotal rows.
Any LandQualityTypeName that is not in your mapping is counted as non_production_acres. This happens silently — the file imports successfully and nothing appears in the import log. The sale will look fine at a glance while its productive acres are all recorded as waste, which makes it useless as a comp.This is why sending your land quality type list up front, and reviewing a small first batch, matters.
If a sale’s land type breakdown sums to zero acres, CamoAg falls back to the sale’s percent tillable attribute, splitting the deeded acres between dryland and non-production. If that is also unavailable, the parcel boundary acreage is used.

Integration

CamoAg uses AWS (Amazon Web Services) S3 as its preferred way to share these files and can make available for customers a limited permission AWS IAM user with access to write to a reserved AWS S3 bucket each UAAR sale data XML format. These files are treated as upserts (SaleIndex used as a unique identifier), imported once daily, for sales data private to a customer organization. DataLog ships with a stored procedure, titled “GetSaleXML” that can generate the UAAR XML format consumed by CamoAg. Customers would need to define a process where this can be called to generate the XML files and send them to Amazon S3. Practical details for whoever configures the drop:
  • Where files go: the agware_data/ folder at the root of your organization’s S3 path. Files in subfolders are not picked up.
  • Accepted file extensions: .xml, .uaar-sale and .uaar-deleted. Any other extension is ignored.
  • One sale per file. A file containing more than one UaarSale element is rejected. A file containing none is treated as processed and discarded.
  • Filenames are up to you. CamoAg identifies sales by SaleIndex and detects deletes from the file contents, not the filename. Using the sale index in the name makes troubleshooting easier.
  • Import runs once daily. Files dropped during the day are picked up on the next run.
  • Processed files are moved out of the drop folder into a processed/ location after import, so the same file is not imported twice. Your CamoAg contact can restore a file from there to re-run it.

Sample UAAR sale file

The following is a synthetic example showing the structure CamoAg consumes. Values are illustrative; your export will contain considerably more attributes, which is expected.

Deleting farm sales

CamoAg supports AgWare sales being deleted from the DataLog system. To remove a sale, send CamoAg a stripped-down XML file with the SaleId and SaleIndex of the sale, along with a flag indicating that the sale has been deleted. The following is an example of the XML format for a deleted sale:
A file is treated as a delete when its root AgWareSale element carries IsDeleted="1" — the filename and extension do not matter. Deleting a sale removes the corresponding farm sale and farm from CamoAg. If CamoAg receives a delete for a sale it does not have, the delete is logged and ignored, so sending extra deletes does no harm.
This file format is a standard convention designed by AgWare, not unique to CamoAg.

Delete files need their own export

Run a separate export alongside the daily sales export that finds deleted sales and writes one delete file per sale to the same agware_data/ folder.

Withdrawn and canceled sales

Treat sales that are withdrawn or canceled in DataLog the same way as deleted ones. A sale that reached loan documents and was then withdrawn is not a valid comp, but it stays in CamoAg until a delete is sent for it. Have your delete export pick up sales that are deleted, withdrawn or canceled.

Cleaning up historical deletes

If you loaded historical sales into CamoAg, sales deleted or withdrawn in DataLog since then are probably still in CamoAg. To clean them up:
  1. Get the daily delete export running first, so new deletes are handled going forward.
  2. Then run the delete export once over the same history window you used for the original historical sales load.

Sales that should not be sent

CamoAg imports every sale it receives. It does not apply an arms-length test, an outlier check, or any other quality filter, and it does not read the AgWare Motivation attribute. If your organization flags non-arms-length transactions, outliers, or otherwise unreliable comps in DataLog, exclude those sales in the stored procedure or in the process that writes files to S3. Anything that reaches the bucket becomes part of your comp set in CamoAg. The upside of filtering upstream is that CamoAg becomes a clean, pre-verified view of your sales — loan officers and CMA authors can trust what they see without re-checking each comp.

Troubleshooting

Import errors are recorded in your organization’s import log; your CamoAg contact can review them with you.
SaleIndex, DeededAcres, SalePrice, CountyCode, a state, and a sale date are all required. Check that the stored procedure is populating them for the sale in question.
CountyCode is a 3-digit county FIPS code and must be valid for the sale’s state. A mismatch usually means the state and county fields came from different records.
Every SaleApn in the file must have both ParcelNumber and Acres. A single parcel missing Acres rejects the entire file, not just that parcel.
Each file must contain exactly one UaarSale. If your export batches sales, split it into one file per sale.
Future-dated sales are not accepted. This is usually a date parsing or timezone issue in the export.
Percent tillable must be between 0 and 100. Values outside that range reject the sale.
If the deeded acres and the mapped parcel geometry differ by more than a tolerance, the sale is flagged rather than imported with bad geometry. Usually this means an APN on the sale is incorrect or belongs to a different parcel.
A sale needs a location. If it has no SaleMap coordinates and no usable PLSS section, the sale record is stored but no farm sale is created. Adding Lat / Long to the export resolves this.
CamoAg only removes a sale when it receives a delete file for that SaleIndex. Check that your delete export is running, that it covers withdrawn and canceled sales, and that it was updated for Maven’s move to temporal tables. See Deleting farm sales.
The sale was probably re-posted under a new SaleIndex. CamoAg matches sales only on SaleIndex, so send a delete file for the old index.
Almost always an unmapped land quality type — unmapped names are recorded as non-production acres without raising an error. Send your current land quality type list to CamoAg so the mapping can be updated, then the affected sales can be re-imported.

Importing Subjects or Sales to AgWare

Overview

The CamoAg platform works with AgWare Maven to synchronize subjects and sales data from CamoAg to AgWare. For more information, follow the AgWare setup docs
Last modified on September 24, 2026