{"id":19622160,"url":"https://github.com/commercetools/connect-fulfilment-integration-template","last_synced_at":"2025-10-27T16:05:03.930Z","repository":{"id":251909897,"uuid":"793965337","full_name":"commercetools/connect-fulfilment-integration-template","owner":"commercetools","description":null,"archived":false,"fork":false,"pushed_at":"2024-10-19T13:10:38.000Z","size":721,"stargazers_count":1,"open_issues_count":6,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-20T21:48:13.764Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/commercetools.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-04-30T07:47:53.000Z","updated_at":"2024-08-06T10:58:23.000Z","dependencies_parsed_at":"2024-08-06T13:50:05.756Z","dependency_job_id":"53558622-367c-417f-9af1-861deb17ff8d","html_url":"https://github.com/commercetools/connect-fulfilment-integration-template","commit_stats":null,"previous_names":["commercetools/connect-fulfilment-integration-template"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/commercetools/connect-fulfilment-integration-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commercetools%2Fconnect-fulfilment-integration-template","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commercetools%2Fconnect-fulfilment-integration-template/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commercetools%2Fconnect-fulfilment-integration-template/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commercetools%2Fconnect-fulfilment-integration-template/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/commercetools","download_url":"https://codeload.github.com/commercetools/connect-fulfilment-integration-template/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commercetools%2Fconnect-fulfilment-integration-template/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281295879,"owners_count":26476775,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-27T02:00:05.855Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-11T11:26:18.960Z","updated_at":"2025-10-27T16:05:03.911Z","avatar_url":"https://github.com/commercetools.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# connect-fulfilment-integration-template\n\nThis repository provides a [connect](https://docs.commercetools.com/connect) template for a fulfilment integration connector. This boilerplate code acts as a starting point for integration with external fulfilment service provider.\n\nThis template uses the [Order](https://docs.commercetools.com/api/projects/orders), [Product](https://docs.commercetools.com/api/projects/products), [Inventory](https://docs.commercetools.com/api/projects/inventory) etc., data models from commercetools composable commerce which can be used for querying store-specific product data to sync into external systems. Template is based on asynchronous [Subscriptions](https://docs.commercetools.com/api/projects/subscriptions) to keep the external systems up to date.\n\n## Template Features\n- NodeJS supported.\n- Uses Express as web server framework.\n- Uses [commercetools SDK](https://docs.commercetools.com/sdk/js-sdk-getting-started) for the commercetools-specific communication.\n- Includes local development utilities in npm commands to build, start, test, lint \u0026 prettify code.\n- Uses JSON formatted logger with log levels\n- Setup sample unit and integration tests with [Jest](https://jestjs.io/) and [supertest](https://github.com/ladjs/supertest#readme)\n\n## Prerequisite\n#### 1. commercetools composable commerce API client\nUsers are expected to create API client responsible for fetching product and order details from composable commerce project, API client should have enough scope to be able to do so. These API client details are taken as input as an environment variable/ configuration for connect. Details of composable commerce project can be provided as environment variables (configuration for connect) `CTP_PROJECT_KEY` , `CTP_CLIENT_ID`, `CTP_CLIENT_SECRET`, `CTP_SCOPE`, `CTP_REGION`. For details, please read [Deployment Configuration](./README.md#deployment-configuration).\n\n## Getting started\nThe template contains four separated modules:\n- Inventory import: Provides a REST-API to users to handle stock updates status updates - [create](https://docs.commercetools.com/api/projects/inventory#inventoryentrydraft) or [update](https://docs.commercetools.com/api/projects/inventory#change-quantity) the InventoryEntry\n- Order updates: Provides a REST-API to users to order updates during the post order process, shipping updates including packaging , parcel and other tracking details needs to be synced into ecommerce system from fulfillment system to be able to charge customers for the orders (in case of authorized payments) and also keep order upto date in ecommerce system to reflect right shipping, order status.\n- Order export: Receives message from commercetools project once there is an order created, returnInfoAdded in commercetools store and sync orders created into fulfilment system on regular basis, this component is responsible in keeping fulfilment system up to date on orders and return requests.\n- Product export: Receives message from commercetools project once there is an ProductPublished in commercetools and sync products into fulfilment system on regular basis, this component is responsible in keeping fulfilment system up to date.\n\nRegarding the development of the modules, please refer to the following documentations:\n- [Development of Inventory import](inventory-import/README.md)\n- [Development of Order updates](order-updates/README.md)\n- [Development of Product export](product-export/README.md)\n- [Development of Order export](order-export/README.md)\n\n#### 1. Develop your specific needs\nIn case of authorized payments implementation checkout to be able to charge customers,\n- Implement to capture the money(calling Checkout).\n  Reference: [Checkout Payments API](https://docs.commercetools.com/checkout/payments-api#paymentoperation) \n\n#### 2. Register as connector in commercetools Connect\nFollow guidelines [here](https://docs.commercetools.com/connect/getting-started) to register the connector for public/private use.\n\n## Deployment Configuration\nIn order to deploy your customized connector application on commercetools Connect, it needs to be published. For details, please refer to [documentation about commercetools Connect](https://docs.commercetools.com/connect/concepts)\nIn addition, in order to support connect, the fulfilment integration connector template has a folder structure as listed below\n```\n├── inventory-import\n│   ├── src\n│   ├── test\n│   └── package.json\n├── order-updates\n│   ├── src\n│   ├── test\n│   └── package.json\n├── product-export\n│   ├── src\n│   ├── test\n│   └── package.json\n├── order-export\n│   ├── src\n│   ├── test\n│   └── package.json\n└── connect.yaml\n```\n\nConnect deployment configuration is specified in `connect.yaml` which is required information needed for publishing of the application. Following is the deployment configuration used by fulfilment integration template modules\n```\ndeployAs:\n  - name: inventory-import\n    applicationType: service\n    endpoint: /inventory\n    configuration:\n      standardConfiguration:\n        - key: CTP_PROJECT_KEY\n          description: commercetools project key\n          required: true\n        - key: CTP_CLIENT_ID\n          description: commercetools client ID\n          required: true\n        - key: CTP_REGION\n          description: region of commercetools composable commerce project\n          required: false\n        - key: CTP_SCOPE\n          description: commercetools client scope\n          required: false\n      securedConfiguration:\n        - key: CTP_CLIENT_SECRET\n          description: commercetools client secret\n          required: true\n  - name: order-updates\n    applicationType: service\n    endpoint: /order-updates\n    configuration:\n      standardConfiguration:\n        - key: CTP_PROJECT_KEY\n          description: commercetools project key\n          required: true\n        - key: CTP_CLIENT_ID\n          description: commercetools client ID\n          required: true\n        - key: CTP_REGION\n          description: region of commercetools composable commerce project\n          required: false\n        - key: CTP_SCOPE\n          description: commercetools client scope\n          required: false\n      securedConfiguration:\n        - key: CTP_CLIENT_SECRET\n          description: commercetools client secret\n          required: true\n  - name: product-export\n    applicationType: event\n    endpoint: /product-export\n    configuration:\n      standardConfiguration:\n        - key: CTP_PROJECT_KEY\n          description: commercetools project key\n          required: true\n        - key: CTP_CLIENT_ID\n          description: commercetools client ID\n          required: true\n        - key: CTP_REGION\n          description: region of commercetools composable commerce project\n          required: false\n        - key: CTP_SCOPE\n          description: commercetools client scope\n          required: false\n      securedConfiguration:\n        - key: CTP_CLIENT_SECRET\n          description: commercetools client secret\n          required: true\n  - name: order-export\n    applicationType: event\n    endpoint: /order-export\n    configuration:\n      standardConfiguration:\n        - key: CTP_PROJECT_KEY\n          description: commercetools project key\n          required: true\n        - key: CTP_CLIENT_ID\n          description: commercetools client ID\n          required: true\n        - key: CTP_REGION\n          description: region of commercetools composable commerce project\n          required: false\n        - key: CTP_SCOPE\n          description: commercetools client scope\n          required: false\n      securedConfiguration:\n        - key: CTP_CLIENT_SECRET\n          description: commercetools client secret\n          required: true        \n```\n\nHere you can see the details about various variables in configuration\n- CTP_PROJECT_KEY: The key of commercetools composable commerce project.\n- CTP_CLIENT_ID: The client ID of your commercetools composable commerce user account. It is used in commercetools client to communicate with commercetools composable commerce via SDK.\n- CTP_CLIENT_SECRET: The client secret of commercetools composable commerce user account. It is used in commercetools client to communicate with commercetools composable commerce via SDK.\n- CTP_SCOPE: The scope constrains the endpoints to which the commercetools client has access, as well as the read/write access right to an endpoint.\n- CTP_REGION: As the commercetools composable commerce APIs are provided in six different region, it defines the region which your commercetools composable commerce user account belongs to.\n\n## Recommendations\n#### Implement your own test cases\nWe have provided sample unit and integration test cases with [Jest](https://jestjs.io/) and [supertest](https://github.com/ladjs/supertest#readme). The implementation is under `test` folder in all the modules. It is recommended to implement further test cases based on your own needs to test your development. ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcommercetools%2Fconnect-fulfilment-integration-template","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcommercetools%2Fconnect-fulfilment-integration-template","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcommercetools%2Fconnect-fulfilment-integration-template/lists"}