In order to model the behaviour of open concurrent systems by means of Petri nets, we introduce open Petri nets, a generalisation of the ordinary model where some places, designated as open, represent an interface between the system and the environment. Besides generalising the token game to reflect this extension, we define a truly concurrent semantics for open nets by extending the Goltz–Reisig process semantics of Petri nets. We introduce a composition operation over open nets, characterised as a pushout in the corresponding category, suitable for modelling both interaction through open places and synchronisation of transitions. The deterministic process semantics is shown to be compositional with respect to such a composition operation. If a net $Z_3$ results as the composition of two nets $Z_1$ and $Z_2$, having a common subnet $Z_0$, then any two deterministic processes of $Z_1$ and $Z_2$ that ‘agree’ on the common part, can be ‘amalgamated’ to produce a deterministic process of $Z_3$. Conversely, any deterministic process of $Z_3$ can be decomposed into processes of the component nets. The amalgamation and decomposition operations are shown to be inverse to each other, leading to a bijective correspondence between the deterministic processes of $Z_3$ and the pair of deterministic processes of $Z_1$ and $Z_2$ that agree on the common subnet $Z_0$. Technically, our result is similar to the amalgamation theorem for data-types in the framework of algebraic specification. A possible application field of the proposed constructions and results is the modelling of interorganisational workflows, recently studied in the literature. This is illustrated by a running example.