Skip to main content
Applix is a cloud ERP (by Connectuse) with sales, finance and contracts modules. The Nekt connector reads its API v3 and brings to your Catalog the financial data (accounts receivable and payable, boletos, cash and bank balances), contracts with their installments, sales orders, quotes and invoices, and the main registries (customers, products, stock, price lists, salespeople and others).

Before you start

You need API credentials from Applix: a Client ID and a Client Secret. Ask Applix support to enable API access for your company; the credentials give access to the modules your Applix plan includes (Sales, Finance, Contracts).

Configuring Applix as a Source

In the Sources tab, click on the “Add source” button located on the top right of your screen. Then, select the Applix option from the list of connectors. Click Next and you’ll be prompted to add your access.

1. Add account access

The following configurations are available:
  • Client ID: The Client ID of your Applix API credentials.
  • Client Secret: The Client Secret of your Applix API credentials.
  • Start Date: Documents dated from this day on are synced: orders, quotes and invoices by their date, accounts receivable and payable by their due date, and cash and bank balances by month. Contracts and registries (customers, products and others) are always read in full.
  • Invoice series (advanced, default 1): the invoice (nota fiscal) series to sync, separated by commas, for example 1 or 1,2,900. Applix lists invoices one series at a time, so include every series your company uses.
Once you’re done, click Next.

2. Select streams

Choose which data streams you want to sync. For faster extractions, select only the streams that are relevant to your analysis.
Tip: The stream can be found more easily by typing its name.
Select the streams and click Next.

3. Configure data streams

Customize how you want your data to appear in your catalog. Select the desired layer where the data will be placed, a folder to organize it inside the layer, a name for each table (which will effectively contain the fetched data) and the type of sync.
  • Layer: choose between the existing layers on your catalog. This is where you will find your new extracted tables as the extraction runs successfully.
  • Folder: a folder can be created inside the selected layer to group all tables being created from this new data source.
  • Table name: we suggest a name, but feel free to customize it. You have the option to add a prefix to all tables at once and make this process faster!
  • Sync Type: you can choose between INCREMENTAL and FULL_TABLE.
    • Incremental: every time the extraction happens, we’ll get only the new and changed data, which is good if, for example, you want to keep every record ever fetched.
    • Full table: every time the extraction happens, we’ll get the current state of the data, which is good if, for example, you don’t want to have deleted data in your catalog.
Most Applix streams are full table: Applix has no “changed since” filter, so every extraction reads the whole period again and always shows the current status of each account, boleto, order and contract (see how changes are captured). Only the detail streams (orders, quotes and invoices details) are incremental. Once you are done configuring, click Next.

4. Configure data source

Describe your data source for easy identification within your organization, not exceeding 140 characters. To define your Trigger, consider how often you want data to be extracted from this source. This decision usually depends on how frequently you need the new table data updated (every day, once a week, or only at specific times). Optionally, you can define some additional settings:
  • Configure Delta Log Retention and determine for how long we should store old states of this table as it gets updated. Read more about this resource here.
  • Determine when to execute an Additional Full Sync. This will complement the incremental data extractions, ensuring that your data is completely synchronized with your source every once in a while. Only the detail streams are incremental, so it is rarely needed for this connector.
Once you are ready, click Next to finalize the setup.

5. Check your new source

You can view your new source on the Sources page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.
For you to be able to see it on your Catalog, you need at least one successful source run.

Streams and Fields

Available streams

The table below lists every stream, its slug (the exact identifier to pass when creating the source via API) and a short description. Nested lists (order items, contract installments, contacts, custom fields) are stored as JSON text, for example json_extract_scalar(produto, '$[0].codigo'). Small objects such as addresses are split into their own columns (endereco_rua, endereco_cidade). Fields Applix returns that are not in its documentation are kept in additional_fields (JSON), so no data is lost.

Fields by stream

Stream name: contas_receber_pagar. One row per account (or per cost-centre/project split of an account): receivables, payables and contract installments not invoiced yet.Sync Strategy:
  • Full table
  • Primary key(s): row_key
Stream name: boletos. One row per boleto of every customer, in every status.Sync Strategy:
  • Full table
  • Primary key(s): id
Stream name: saldos_caixa_banco. One row per cash/bank account and month: the balance at the end of the month.Sync Strategy:
  • Full table
  • Primary key(s): row_key
Stream name: contas_receber. One row per receivable as the sales module shows it, with the linked invoices and orders.Sync Strategy:
  • Full table
  • Primary key(s): row_key
Stream name: contratos. One row per contract renewal (numero + renovacao).Sync Strategy:
  • Full table
  • Primary key(s): row_key
Stream name: contratos_detalhes. One row per contract renewal with its items, installments (with collection and receivables) and finance setup.Sync Strategy:
  • Full table
  • Primary key(s): row_key
Stream name: pedidos. One row per sales order.Sync Strategy:
  • Full table
  • Primary key(s): numero
Stream name: pedidos_detalhes. One row per sales order with its items.Sync Strategy:
  • Incremental on datapedido
  • Primary key(s): numero
Stream name: orcamentos. One row per quote.Sync Strategy:
  • Full table
  • Primary key(s): row_key
Stream name: orcamentos_detalhes. One row per quote with its items. Not selected by default.Sync Strategy:
  • Incremental on datapedido
  • Primary key(s): numero
Stream name: notas_fiscais. One row per invoice (nota fiscal) of the configured series.Sync Strategy:
  • Full table
  • Primary key(s): row_key
Stream name: notas_fiscais_detalhes. One row per invoice with taxes, items and linked orders.Sync Strategy:
  • Incremental on dataemissao
  • Primary key(s): row_key
Stream name: clientes. One row per customer.Sync Strategy:
  • Full table
  • Primary key(s): row_key
Stream name: produtos. One row per product.Sync Strategy:
  • Full table
  • Primary key(s): codigo
Stream name: saldo_estoque. One row per product with its stock by storage location and lot.Sync Strategy:
  • Full table
  • Primary key(s): codigo
Stream name: tabela_precos. One row per price list with its versions and product prices.Sync Strategy:
  • Full table
  • Primary key(s): tabelapreco
Stream name: categorias_produto. One row per product category.Sync Strategy:
  • Full table
  • Primary key(s): codigo
Stream name: condicoes_pagamento. One row per payment term.Sync Strategy:
  • Full table
  • Primary key(s): codigo
Stream name: formas_cobranca. One row per collection method.Sync Strategy:
  • Full table
  • Primary key(s): row_key
Stream name: grupos_cliente. One row per customer group.Sync Strategy:
  • Full table
  • Primary key(s): codigo
Stream name: servicos. One row per service.Sync Strategy:
  • Full table
  • Primary key(s): codigo
Stream name: sucatas_receber. One row per scrap balance document (scrap to receive or to pay).Sync Strategy:
  • Full table
  • Primary key(s): row_key
Stream name: vendedores. One row per salesperson.Sync Strategy:
  • Full table
  • Primary key(s): vendedor

Implementation Notes

How changes are captured

Accounts, boletos, orders and contracts change status (paid, cancelled, invoiced) long after they are created, and Applix has no filter for “changed since”. So:
  • Accounts receivable and payable are read by due date, in 30-day periods, from the Start Date up to five years ahead (future installments and bills). Every extraction reads the whole range again, so a payment or a cancellation always shows up.
  • Boletos are read for every customer, in each status (open, settled, cancelled), on every extraction. This means three requests per customer, so extractions take longer for companies with many customers.
  • Cash and bank balances are read month by month from the Start Date; the current month shows the balance so far.
  • Contracts are read in full on every extraction (from the year 2000 on), and so are their details, because installments are paid or renegotiated long after the contract starts. Each renewal of a contract is its own row.
  • Orders, quotes and invoices are read by date from the Start Date on every extraction, so their status is always current. Their detail streams make one request per document, so they are incremental. The first extraction reads every detail (and saves its progress as it goes, so an interrupted first extraction continues where it stopped; progress is not saved while Applix cannot find any of the details requested, in case the problem is on Applix’s side). Later extractions read the details again for:
    • documents dated in the last 30 days before the most recent extraction;
    • documents up to one year old whose status is not final yet (for example an order not yet invoiced or cancelled), until they reach a final status, and once more when they do.
    A document whose details Applix cannot find is requested again when its status changes (for example when it is invoiced), and otherwise once a week, until its details are found (a warning is shown when details are missing). A document changed after reaching a final status (for example an authorized invoice cancelled later), or created already final with a date more than 30 days back, keeps its previous details until a Full Sync of the detail stream. The list streams (pedidos, orcamentos, notas_fiscais) always show the current status.

Data Quality Considerations

  • Completeness checks: each list is read in full and checked against the total Applix reports before it is loaded. When Applix returns fewer rows than that total, they are only accepted if the extraction can confirm that Applix’s total counts more than the filtered data (for example, the whole table); if it can confirm the opposite, the extraction of that stream fails instead of loading a cut-off list. If it cannot tell either way, the data is read twice, loaded only when both reads are identical, and a warning says its completeness could not be fully verified. If the data changes while it is being read (for example, documents created during business hours), the list is read again; if it keeps changing, the extraction of that stream fails and the next extraction tries again.
  • If an extraction fails: registries, cash and bank balances, and contracts with their details are read completely before anything is written, so a failed extraction leaves those tables as they were. Accounts receivable and payable, boletos, orders, quotes, invoices and their details are too large for that and are loaded period by period: if one of them fails midway, the run is marked as failed and, depending on your destination, the table may hold only the periods read before the failure until the next successful extraction, which reads everything again.
  • Boletos: if Applix returns no boletos for any customer, the extraction shows a warning, because the table will be empty.
  • Dates and times: dates and times are in Applix’s local time (Brazil), without a time zone.
  • Quote numbers: Applix’s documentation does not list the quote number in the quotes list. When Applix sends it, it identifies the quote; when it does not, the quote’s details cannot be requested (a warning is shown) and two quotes identical in every field are kept as one row. That is why Quote Details is not selected by default: select it only if the numero column of Quotes is filled.
  • Customers without a CNPJ/CPF: they are kept as separate rows, with cnpjcpfcliente empty (null) and a row_key built from their type, names, email and phone.
  • Accounts with the same id: an account split across cost centres or projects, or the installments of a contract, can appear as several rows with the same id, each identified by row_key.