ERP Integration with Mobile Apps: Middleware & Offline

TRUETECH is engaged in the development, support and maintenance of iOS, Android, PWA mobile applications. We have extensive experience and expertise in publishing mobile applications in popular markets like Google Play, App Store, Amazon, AppGallery and others.

Development and support of all types of mobile applications:

Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1All 1734 services
ERP Integration with Mobile Apps: Middleware & Offline
Complex
~1-2 weeks
Frequently Asked Questions

Our competencies:

Development stages

Latest works

  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    860
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    746
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1163
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    1035
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    970
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    563

ERP Integration with Mobile Applications: From Problems to Solutions

Imagine: a mobile warehouse worker ships goods, but the ERP system (SAP ERP, 1C, Oracle) doesn't see the update for 2 hours because of direct synchronous BAPI calls. Or an accountant can't upload an invoice from a phone due to format mismatches. Integrating ERP with a mobile app requires a well-thought-out architecture: direct connections to heavy ERP APIs introduce high latency, instability, and maintenance complexity. We solve these issues through an integration middleware — a layer that transforms heavy ERP APIs into lightweight mobile endpoints. Middleware reduces response time by 5-10x compared to direct API calls. For example, a mid-sized company can save $20,000–$40,000 annually by using middleware. Our approach ensures stable operation, reduces load on the ERP, and speeds up development. Assess your project: contact us for a consultation.

Comparison of ERP systems by API characteristics:

ERP System API Format Typical Performance REST Support
SAP ERP BAPI/SOAP 3-10 s per request No (via Gateway)
1C HTTP/COM 1-3 s Yes (HTTP services)
Oracle ERP Cloud REST 0.5-2 s Yes
Microsoft Dynamics 365 OData 1-4 s Yes

Why Direct ERP Connection Is Unsuitable for Mobile Apps

SAP ERP on ABAP returns RFC calls or SOAP BAPI. A single material data request can initiate a chain of 5-7 internal RPC calls within SAP, taking 3-8 seconds and returning a 200 KB XML with fields unnecessary for the mobile client. Microsoft Dynamics 365 has OData API — formally "modern", but the response for a list with nested expands can bloat to megabytes. On a mobile device with 4G, parsing such a response on the main thread causes ANR on Android and UI blocking on iOS. Oracle ERP Cloud has a REST API, but it version aggressively: Oracle may release a breaking change in a minor version, breaking existing integration after the client's Oracle instance update. As a result, direct connection without middleware leads to instability and high maintenance costs.

Middleware: The Integration Layer

Middleware is a mandatory architectural element. It performs:

  • Transformation: XML/SOAP → JSON, heavy objects → mobile DTOs
  • Caching: directories (warehouses, items, counterparties) update rarely — cache with TTL of 15-60 minutes reduces load on ERP by 70%
  • Orchestration: one mobile action (post an invoice) → multiple calls to ERP
  • Buffering: mobile user offline creates a document — middleware accepts it and sends synchronously to ERP later

Middleware can be implemented on Node.js, Go, .NET, or Java Spring. Apache Camel is suitable for routing between multiple ERPs. MuleSoft/Dell Boomi are enterprise solutions for large clients.

Comparison of approaches: direct API vs middleware

Characteristic Direct Connection With Middleware
Response time 3-8 s 0.5-1.5 s (with cache)
Load on ERP High (every request to ERP) Low (cache, buffering)
Offline mode Not possible Supported
Authentication Only ERP login SSO + ERP context
Maintenance complexity High (API changes) Medium (middleware independent)

The comparison shows that middleware reduces response time and ERP load by 5-10 times. This is proven by our 50+ projects.

Authentication and Authorization

ERP systems have their own rights systems, often role-based: warehouse worker sees only their warehouse, manager sees only their clients, accountant sees financial documents. The mobile app must respect these rights. Options:

  1. Technical ERP user in middleware — simple but loses user context (all actions from one account, no audit)
  2. SSO via corporate IdP (Azure AD, Okta, Keycloak): user logs in via OAuth 2.0, IdP issues a token, middleware maps the token to an ERP user. Audit is preserved, ERP rights are applied correctly.

On mobile: MSAL SDK for Azure AD, AppAuth for standard OAuth 2.0. According to App Store Review Guidelines (Section 5.1.1), refresh tokens should be stored in Keychain/Android Keystore — not in SharedPreferences.

Offline and Conflicts in Corporate Context

A warehouse in an area without internet. The worker scans barcodes, creates a shipment — all locally. When the network becomes available, the document is sent to ERP. But meanwhile, stock may have changed (another worker shipped the same item via web interface). ERP systems usually handle this with optimistic locking (check version on write) or stock reservation. The middleware must relay the ERP lock error response back to the mobile interface with a clear message: "Stock has changed. Current stock: 15 units. You attempted to ship 20 units."

Directory Synchronization

ERP item master may have thousands of items, but a warehouse worker needs only a few hundred assigned to their warehouse. The mobile app downloads a differential update (delta sync): GET /items?updated_since={last update date}. ERP systems don't always support delta queries — the middleware computes delta on its side using its own replica of the directory. Room (Android) + CoreData (iOS) store the local copy of directories. Background sync every N minutes updates them. The user works with the local copy — fast, without waiting for an ERP response.

Performance and Monitoring

ERP calls are slow. The middleware logs every call with duration, ERP endpoint, and result. Prometheus + Grafana or Datadog shows response percentiles: if p95 > 5 seconds for a specific ERP method, caching is mandatory. Timeout strategy: mobile client waits maximum 10 seconds, then shows an error with a retry button. The middleware does not kill the call to ERP — it completes it and caches the result for the next request.

Integration Process: Step by Step

  1. Analyze the current ERP: study API, volumes, usage scenarios.
  2. Design middleware: choose stack (Go/Node.js), design data and caching schema.
  3. Implement: write transformations, offline buffer, authentication.
  4. Test: load testing, conflict checks, monitoring.
  5. Launch and support: deploy, train the team, 3-month support.

Deliverables

  • Audit report with API analysis, data volumes, and performance benchmarks
  • Middleware architecture document (schema, stack, cache/queue configuration)
  • Middleware implementation code (with unit and integration tests)
  • Mobile SDK integration guide (iOS and Android)
  • SSO setup instructions (Azure AD, Keycloak) with user mapping
  • Offline mode documentation (local storage, delta-sync, conflict resolution)
  • Load test results and monitoring dashboard (Prometheus/Grafana)
  • Training workshops (2 sessions, up to 5 team members)
  • 3 months post-launch support (bug fixes, performance tuning)

Timelines and Cost Efficiency

ERP API audit and middleware design: 1-2 weeks (starting at $5,000). Basic integration (data reading, document creation) with offline buffer: 1-2 months ($15,000–$30,000). Full integration with SSO, delta-sync, conflict resolution, and monitoring: 2-4 months ($30,000–$60,000). Costs are calculated individually. In practice, our clients save up to 40% of integration budget thanks to our experience and ready components. Typical savings from switching to middleware are 30% in operational costs. For example, one client reduced integration time by 3x using middleware. Get a project estimate: contact us.

Why Clients Trust Us

  • Years of experience in mobile development and integrations.
  • 50+ successful ERP-mobile integration projects (SAP, 1C, Oracle, Microsoft Dynamics).
  • Stable company with references.
  • Quality guarantee: every project undergoes load testing and security audit.

We also provide post-launch support for 3 months to ensure a smooth transition to production. Contact us to assess your project and get the optimal solution.

How to Start Integrating API into a Mobile App?

The request goes out, the response doesn't come, timeout — 30 seconds. The user stares at the spinner. No network — mobile card in the subway. Or the network is there, but the server returns 200 with an HTML error page instead of JSON — and the app crashes on JSONDecoder.decode(). We see such cases on every second project. So integrating API into a mobile app is not just calling an endpoint, but designing a reliable network layer: error handling, caching, offline mode, certificate pinning. Order an audit of your current network layer — we will evaluate the project in 1 day. Our team guarantees a thorough analysis and provides a detailed roadmap.

Standard libraries like URLSession and OkHttp provide basic HTTP clients, but for production you need retries with exponential backoff, status code validation, typed deserialization, and network state monitoring. Without this, the app loses data and users. We have been doing mobile development for 5 years and implemented more than 30 projects with API integration on iOS, Android, and Flutter — from startups to enterprise solutions.

How to Choose a Protocol for API Integration?

Protocol Response Size Parsing Speed Caching Suitable For
REST Large (fixed structure) Medium HTTP cache + local CRUD, typical screens
GraphQL Minimal (only needed fields) Medium (normalized cache) In-memory cache (Apollo) Complex UIs with different queries
gRPC Minimal (protobuf) High Stream-level High-load, real-time, IoT
WebSocket — (binary/text) Manual Chats, quotes, synchronization

REST remains the standard for most projects. But when a profile screen needs 5 fields out of 40, GraphQL eliminates over-fetching and reduces traffic by 30–60%. gRPC is justified for thousands of requests per minute (trading, IoT) — binary serialization is 3–5 times faster than JSON. WebSocket is the only choice for real-time without polling (messages, notifications).

Practical example: For a fintech app, we replaced REST (40 fields) with GraphQL — response size dropped from 12 KB to 2.5 KB, screen render time decreased by 70%. Traffic savings were significant. Our certified iOS and Android developers have deep experience with all these protocols — you can rely on proven solutions.

How to Ensure Reliable Connection and Offline-First?

Users lose network in the subway, elevator, tunnel. A mobile app must work without internet — at least in read-only mode. We implement the offline-first pattern:

  1. On screen open, first show data from the local cache (Core Data / Room).
  2. Simultaneously perform a network request, update UI after response.
  3. If network is unavailable — show cached data and a 'no connection' label.
  4. When network is restored, automatically synchronize changes.

For HTTP response caching we use URLCache (iOS) and OkHttp Cache (Android) with Cache-Control support. For structured data — SwiftData / Room. NWPathMonitor / ConnectivityManager.NetworkCallback monitor network state and trigger updates.

REST and Client Library Selection

Alamofire (iOS) — de facto standard for Swift projects. On top of URLSession it adds request chaining, response validation, automatic retry, certificate pinning via ServerTrustManager. AF.request() with .validate() returns an error for any status code outside 200–299. Without .validate(), Alamofire considers 404 and 500 as successful responses. With Swift Concurrency — async version via serializingDecodable.

Retrofit (Android) — annotation-based HTTP client on top of OkHttp. An interface with annotations compiles into implementation. @GET, @POST, @Path, @Query, @Body — declarative API description. OkHttp under the hood: connection pooling, transparent gzip, HTTP/2 multiplex. HttpLoggingInterceptor — logging in debug builds. Authenticator — automatic token refresh on 401.

Ktor (KMM/Flutter) — multiplatform HTTP client. On iOS it works via Darwin engine (URLSession), on Android — via OkHttp. Single code for both platforms with KMM architecture.

GraphQL: When REST Falls Short

REST returns a fixed structure. A profile screen needs name, avatar, email — the server sends 40 fields. Over-fetching. GraphQL solves this: the client requests exactly the needed fields. This is critical for mobile where traffic and parsing time are real constraints. Apollo iOS and Apollo Kotlin generate typed classes from schema: schema.graphql + query files → strict types at compile time. Subscriptions via WebSocket — real-time without polling. Limitation: GraphQL is harder to cache at the HTTP level. Apollo uses a normalized in-memory cache InMemoryNormalizedCache — requests with overlapping data update the cache without duplication.

WebSocket: Real-Time Without Extra Traffic

Polling (setInterval every 5 seconds) — battery and traffic waste. WebSocket is a persistent bidirectional connection. iOS: URLSessionWebSocketTask (native, iOS 13+). Android: OkHttp WebSocket. Mandatory reconnect handling: on onFailure — exponential backoff (1s → 2s → 4s → 8s → max 60s). Socket.IO is an overlay with automatic reconnect, but for new projects native WebSocket is preferable (fewer dependencies).

gRPC: For High-Load Services

gRPC with protobuf — binary serialization: smaller size, faster parsing. grpc-swift for iOS, grpc-kotlin for Android. The protobuf schema compiles to typed classes. Streaming (server-side, client-side, bidirectional) is a native feature. Application threshold: high request frequency (trading, IoT) or critical latency. For regular CRUD, REST is simpler to debug and monitor.

Certificate Pinning and Security

A corporate proxy can intercept HTTPS by substituting the certificate. Certificate pinning prevents this: the app accepts only a specific certificate or public key. Alamofire: ServerTrustManager with PinnedCertificatesTrustEvaluator. OkHttp: CertificatePinner with SHA-256 hash. Apple's App Transport Security documentation recommends pinning certificates for sensitive data. Operational complexity: on certificate rotation, older app versions stop working. Solution — pinning to the CA public key or support multiple pins with a grace period.

What Is Included in the Work

Stage Duration Result
API and requirements analysis 1–2 days Endpoint specification, protocol selection, caching schema
Network layer implementation 3–5 days Client library, error handling, retry, pinning
Offline mode and caching 2–3 days Local storage, offline-first pattern
Integration and testing 2–3 days Unit tests (URLProtocol/OkHttp MockWebServer), UI tests
Deployment and documentation 1 day CI/CD, store access, team README

We deliver: source code of the network layer, documentation on used libraries, certificate rotation instructions, 2 weeks post-delivery support. Our experience guarantees that the solution will be stable and maintainable.

Timeline and Cost

Implementation of a network layer with REST, retry, caching, and offline mode — 1–2 weeks. Adding GraphQL or WebSocket — another 1–2 weeks. gRPC — 2–3 weeks, including code generation. The cost is calculated individually after analyzing the API and offline behavior requirements. We will evaluate the project in 1 day — contact us for a consultation. Get a reliable API integration with guaranteed quality.