TALXIS.CLI 1.0.2

Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
dotnet tool install --global TALXIS.CLI --version 1.0.2
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local TALXIS.CLI --version 1.0.2
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=TALXIS.CLI&version=1.0.2
                    
nuke :add-package TALXIS.CLI --version 1.0.2
                    

TALXIS CLI (txc)

This project is currently in a development phase and not ready for production use. While we actively use these tools internally, our aim is to share and collaborate with the broader community to refine and enhance their capabilities. We are in the process of gradually open-sourcing the code, removing internal dependencies to make it universally applicable. At this stage, it serves as a source of inspiration and a basis for collaboration. We welcome feedback, suggestions, and contributions through pull requests.

If wish to use this project for your team, please contact us at hello@networg.com for a personalized onboarding experience and customization to meet your specific needs.

Goal

The goal of the TALXIS CLI (txc) is to provide a modular, extensible .NET global tool that helps Power Platform developers automate tasks across their local code repositories and data manipulation.

Installation

You can install the TALXIS CLI as a .NET global tool using the following command:

dotnet tool install --global TALXIS.CLI

After installation, you can run the CLI using the txc command from any terminal.

To update the TALXIS CLI to the latest version, use the following command:

dotnet tool update --global TALXIS.CLI

Command Groups

The CLI is organized into modular command groups. Each group provides a set of related commands.

Data Commands (txc data)

Data-related utilities for ETL, Power Query, and automation scenarios.

convert command

Converts tables from an Excel .xlsx file into a structured CMT format. Each table in the spreadsheet is exported as an <entity> in the XML, with columns as fields and rows as records.

Usage:

txc data convert --input <export.xlsx> --output <data.xml>
transform-server command

Starts a simple local HTTP server exposing endpoints for ETL/data transformation tasks. Useful for integrating with Power Query or other local ETL tools.

Usage:

txc data transform-server [--port <port>]
  • --port (optional): Port to run the server on. Defaults to 50505 if not specified.

Example:

txc data transform-server --port 50505

Endpoints:

  • POST /ComputePrimaryKey — Accepts a JSON body with the following structure (case-insensitive):
{
  "entity": "talxis_salesorder",
  "alternateKeys": {
    "talxis_customernumber": 1234,
    "talxis_sapnumber": "SO34344"
  }
}

About Alternate Keys:

Alternate keys are a set of attributes (fields) on a record that, together, uniquely identify that record and never change for its lifetime. For the ComputePrimaryKey endpoint, alternate keys are used to calculate a deterministic primary key (GUID) for each record. This ensures that:

  • The same record will always get the same primary key, even if the migration is run multiple times.
  • Records can be upserted (inserted or updated) reliably, because their identity is stable and based on business data, not on system-generated IDs.
  • In Microsoft Dataverse, the primary key must be a GUID, so we use alternate keys to generate a GUID that is unique and repeatable for each record.

This approach is especially useful for data migrations, deduplication and integration with external systems.

The alternateKeys object supports any number of key-value pairs, and values can be of any JSON type (string, number, etc). These keys should be attributes that never change for a record and together uniquely identify it. The endpoint returns a deterministic GUID as { "primaryKey": "..." }. The entity parameter is used as a prefix to avoid collisions between entities.

  • POST /ComputePrimaryKey — Accepts a JSON body with the following structure (case-insensitive):
{
  "entity": "talxis_salesorder",
  "alternateKeys": {
    "talxis_customernumber": 1234,
    "talxis_sapnumber": "SO34344"
  }
}

The alternateKeys object supports any number of key-value pairs, and values can be of any JSON type (string, number, etc). The endpoint returns a deterministic GUID as { "primaryKey": "..." }. The entity parameter is used as a prefix to avoid collisions between entities.

Sample request:

curl -X POST http://localhost:50505/ComputePrimaryKey \
  -H "Content-Type: application/json" \
  -d '{"entity":"talxis_salesorder","alternateKeys":{"talxis_customernumber":1234,"talxis_sapnumber":"SO34344"}}'

Collaboration

We are happy to collaborate with developers and contributors interested in enhancing Power Platform development processes. If you have feedback, suggestions, or would like to contribute, please feel free to submit issues or pull requests.

Local building and debugging

To build and debug the CLI locally:

  1. Clone the repository and restore dependencies:
    git clone <repo-url>
    cd tools-cli
    dotnet restore
    
  2. Build the solution:
    dotnet build
    
  3. Run the CLI directly (for example, to test the data transform server):
    dotnet run --project src/TALXIS.CLI -- data transform-server
    
  4. You can also debug using Visual Studio or VS Code by opening the solution and setting breakpoints as needed.

Releasing a new version

This project uses explicit Microsoft-style versioning (e.g., 1.0.0.0) set in the Directory.Build.props file. A GitHub Actions workflow publishes new releases to NuGet.org.

Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
1.0.6 197 8/8/2025
1.0.5 247 8/5/2025
1.0.4 49 8/2/2025
1.0.3 46 8/2/2025
1.0.2 33 8/2/2025
1.0.1 36 8/2/2025
1.0.0 106 7/31/2025