Integrating MyFactory ERP with Imixs-Workflow
Blog: IMIXS-WORKFLOW Blog
With the latest version of the Imixs-Adapters Project 3.2.2, Imixs now offers a MyFactory Adapter that allows seamless integration between MyFactory ERP and the Imixs-Workflow engine. This adapter enables you to search customers, retrieve contact persons, or update sales orders directly from your workflow applications.

But this blog post is not just about a new adapter. It’s about why we built it and what it tells us about the state of enterprise software integration in 2025.
The Problem: SOAP in 2025
MyFactory is a well-established ERP system with thousands of customers in the German-speaking market. When we needed to integrate it into an Imixs-Workflow application, we discovered that the only available API is a SOAP/XML interface — a technology that dates back to 2005.
For those unfamiliar with SOAP, here’s what a simple customer search requires:
- Create a
MessageFactoryandSOAPMessage - Set the
SOAPActionHTTP header (without it, nothing works!) - Declare XML namespaces
- Build the SOAP envelope and body
- Create nested condition elements for search parameters
- Establish a connection and send the request
- Parse the XML response using DOM/NodeList
- Handle namespace variations in the response
- Close the connection properly
That’s roughly 200 lines of boilerplate code for a single API call.
The Enterprise Software Dilemma
Here’s where it gets interesting. We discovered that MyFactory does offer REST APIs — but only as paid add-ons from partner companies, starting at €1,500 plus monthly fees.
This is a common pattern in enterprise software:
- Ship a legacy API (SOAP, proprietary protocols)
- Wait for customers to struggle with integration
- Offer a “modern” solution as a premium add-on
- Profit from the pain you created
We believe this approach is fundamentally at odds with how software should work in 2025.
The Open Source Solution
Instead of paying for a wrapper around the same SOAP API, we built our own adapter and released it as open source under the GPL.
The imixs-adapters-myfactory module encapsulates all the SOAP complexity and provides a clean, simple Java API:
@Inject
CustomerService customerService;
// Search customers - that's it!
List<Customer> customers = customerService.searchByCompanyName("Müller*");
// Get customer details
Customer customer = customers.get(0);
String company = customer.getName1();
String city = customer.getCity();
int customerId = customer.getCustomerId(); // Use this for orders
The adapter handles:
- Session management — automatic login/logout
- SOAP envelope construction — all the XML boilerplate
- SOAPAction headers — the magic header that makes it work
- Response parsing — from XML to Java objects
- Error handling — meaningful exceptions instead of SOAP faults
By releasing this adapter as open source, we’re giving the community a tool that would otherwise cost thousands of euros. But more importantly, we’re demonstrating that open APIs and open source are the future of enterprise integration.
What’s Included
The adapter provides different services like:
| Service | Description |
|---|---|
MyFactorySessionManager | Authentication and session handling |
CustomerService | Search and retrieve customer data |
ContactService | Search and retrieve contact persons |
SalesOrderService | Update sales orders |
All services support wildcard searches using *:
// Find all companies starting with "Tech"
customerService.searchByCompanyName("Tech*");
// Find all companies in Munich
customerService.searchByCity("München");
// Combined search
CustomerSearchCondition condition = new CustomerSearchCondition()
.setName1("*GmbH")
.setCity("Berlin");
List<Customer> customers = customerService.searchCustomers(condition);
Integration with Imixs-Workflow
A typical use case is customer lookup during workflow processing. For example, when a user creates a new order, they can search for existing customers:
@Named
@RequestScoped
public class MyFactoryLookupController {
@Inject
MyFactorySessionManager sessionManager;
@Inject
CustomerService customerService;
public List<Customer> searchCustomers(String searchTerm) {
List<Customer> result = new ArrayList<>();
try {
sessionManager.login();
result = customerService.searchByCompanyName(searchTerm + "*");
} catch (Exception e) {
logger.warning("MyFactory search failed: " + e.getMessage());
} finally {
try {
sessionManager.logout();
} catch (Exception e) {
// ignore
}
}
return result;
}
}
The customer ID can then be stored in the workflow item and used to create orders in MyFactory.
Getting Started
Add the dependency to your Maven project:
<dependency>
<groupId>org.imixs.workflow</groupId>
<artifactId>imixs-adapters-myfactory</artifactId>
<version>3.2.2</version>
</dependency>
Configure the connection via environment variables:
MYFACTORY_ENDPOINT_URL_AUTH=http://your-server/myfactory/services/services.asmx
MYFACTORY_USERNAME=your_user
MYFACTORY_PASSWORD=your_password
MYFACTORY_DATABASE=your_database
MYFACTORY_DIVISION=1
That’s it.
Contributing
The adapter currently supports customer search, contact lookup, and sales order updates. If you need additional functionality — suppliers, invoices, inventory — we welcome contributions!
Visit the project on GitHub: github.com/imixs/imixs-adapters
Conclusion
Building this adapter reminded us why we believe in open source. Enterprise software vendors often create artificial barriers — legacy APIs, paid add-ons, closed ecosystems — that make integration unnecessarily difficult and expensive.
Open source offers a different path: transparency, collaboration, and shared solutions to common problems. The Imixs-Adapter-MyFactory is our contribution to everyone who needs to integrate MyFactory into their applications. Use it, extend it, improve it. That’s what open source is all about.
The Imixs-Adapter-MyFactory module is part of the Imixs-Adapters Project, which provides connectors for various enterprise systems including LDAP, DATEV, SEPA, and Apache Kafka and more…