Choose code-based connectors for systems with complex logic, edge cases, or protocol handling needs, and use configuration-led connectors when the target model is stable enough to map without custom development.
Choosing the connector style that matches the integration problem
The real decision is not “code versus configuration” in the abstract, it is whether the connector needs engineering to stay correct over time. Code-based connectors fit when the integration has branchy business logic, protocol quirks, pagination, retries, transformations, or exception handling that would become brittle if forced into a simple mapping layer.
Configuration-led connectors fit when the source and target schemas are predictable, the field relationships are stable, and the main work is declarative mapping rather than custom behaviour. That usually makes them faster to maintain, easier to review, and less expensive to adapt when the upstream or downstream model changes in a straightforward way.
A useful test is whether the connector is translating a stable contract or encoding operational judgement. If the target side changes rarely and the rules can be expressed cleanly in configuration, avoid code. If the connector must interpret conditions, enforce sequence, or handle non-standard responses, code is the safer choice because the logic is explicit and testable.
What changes the answer in practice
Connector choice is often driven less by raw complexity than by how much control you need over failure handling and evolution. Code gives you stronger expressiveness, version control, and unit testing, but it also raises the cost of change and can hide business rules inside bespoke implementations. Configuration gives you speed and consistency, but only while the integration stays close to the assumptions the configuration model was built for.
When the target model is volatile, configuration-led designs can create a false sense of simplicity. Small schema changes may look easy at first, but repeated edge cases can turn the configuration into an unreviewable patchwork. At that point, the operational burden shifts from development to maintenance, and the connector becomes harder to reason about than a well-factored code path.
When the target model is stable, code can be overkill if it simply reproduces what a declarative mapping already does. In those cases, code increases the number of places where defects can hide, while configuration keeps the integration intent visible to non-developers and reduces the amount of bespoke logic that must be retested after every change.
Where to draw the line
Use code when any of these are true: the integration has conditional branching, protocol-specific behaviour, complex enrichment, error translation, or stateful sequencing. Use configuration when the connector is mostly field mapping, routing, filtering, or straightforward orchestration against a stable interface.
It also helps to ask who will own the connector after launch. If the owning team needs rapid business-side edits without redeploying software, configuration usually wins. If the connector must be built as part of a larger service with strong quality gates, code may be the better fit because the same engineering controls apply as the rest of the system.
In practice, the best designs are often hybrid. Keep the stable mapping and environment-specific values in configuration, then reserve code for the parts that genuinely require logic, resilience, or protocol handling. That keeps the operational surface area smaller without pretending that every integration can be made declarative.
Standards & Framework Alignment
This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.
NIST SP 800-53 Rev 5 and OWASP ASVS set the technical controls, while ISO/IEC 27001:2022 defines the regulatory obligations.
| Framework | Control / Reference | Relevance |
|---|---|---|
| NIST SP 800-53 Rev 5 | CM-2 — Baseline Configuration | Connector choice depends on stable, controlled configuration versus custom logic. |
| CM-6 — Configuration Settings | Declarative connectors rely on controlled configuration to keep mappings predictable. | |
| Recommendation — Standardise connector settings and review deviations before introducing bespoke code. Define and enforce approved connector configuration settings. | ||
| OWASP ASVS | V15 — Secure Coding and Architecture | Code-based connectors need explicit logic design, maintainability, and testability. |
| Recommendation — Apply disciplined architecture and testing when connector behaviour is implemented in code. | ||
| ISO/IEC 27001:2022 | A.8.9 — Configuration management | Connector decisions affect how configuration is controlled and changed over time. |
| Recommendation — Track connector configuration changes through formal change control and approval. | ||
Practitioner Guidance
What to verify: Confirm whether the connector’s complexity comes from data mapping or from runtime behaviour. If the hard part is conditional execution, retries, or protocol edge cases, configuration alone is usually the wrong abstraction.
Decision rule: If the integration can be described as a stable contract with predictable fields, start with configuration-led design; if correctness depends on logic that would be awkward to express declaratively, use code-based connector logic and keep the mapping layer thin.
What good looks like: The connector has one clear owner, the failure modes are observable, and future changes can be made in the least complex layer that can safely express them.
Practitioner takeaway: Choose the simplest connector style that still makes the important behaviour explicit, because hidden complexity is what turns “easy to configure” integrations into expensive production liabilities.
Related resources from NHI Mgmt Group
- What is the difference between a rules-based secret scanner and a hybrid scanner?
- What is the difference between code scanning and runtime identity monitoring?
- How do security teams decide between traffic-based discovery and code-based discovery?
- How should security teams decide whether JIT access is safe for non-human identities?