Un modulo è una sequenza di dichiarazioni che definiscono le variabili e la relativa inizializzazione ed una sequenza di dichiarazioni di routine secondaria (funzione e procedura) che definiscono un funzionamento specifico per un nodo del flusso di messaggi.
un modulo deve iniziare con l'istruzione CREATE node_type MODULE e terminare con un'istruzione END MODULE. La variabile node_type deve essere una tra COMPUTE, DATABASE o FILTER. Il punto di ingresso del codice ESQL è la funzione denominata MAIN, che ha ambito MODULE.
Ciascun modulo è identificato da un nome che segue CREATE node_type MODULE. Il nome può essere stato creato automaticamente con un valore predefinito, che può essere modificato, oppure può essere creato dall'utente. Il nome è gestito indipendentemente dalle lettere maiuscole/minuscole (l'utilizzo del nome con qualsiasi combinazione di lettere maiuscole e minuscole corrisponde alla dichiarazione). Ciò è in contrasto con i nomi dichiarati per gli schemi, le costanti, le variabili e le etichette, che sono sensibili al maiuscolo/minuscolo e devono essere specificati esattamente nel modo in cui sono stati dichiarati.
E' necessario creare il codice per un modulo in un file ESQL con suffisso .esql. Tale file deve essere creato nello stesso schema broker del nodo che lo indica. Deve esistere un modulo del tipo corretto per ciascun nodo corrispondente; il modulo è specifico per tale nodo e non può essere utilizzato da nessun altro nodo.
Quando si crea un file ESQL (o si completa un'attività che crea il file ESQL), vengono indicati il progetto del flusso di messaggi e lo schema broker a cui è associato il file e viene specificato il nome del file.
All'interno del file ESQL, il nome di ciascun modulo è determinato dal valore della proprietà corrispondente del nodo del flusso di messaggi. Ad esempio, la proprietà Modulo ESQL per il nodo Compute specifica il nome del modulo del nodo nel file ESQL. Il valore predefinito per tale proprietà è il nome del nodo. E' possibile specificare un nome diverso, ma è necessario verificare che il valore della proprietà ed il nome del modulo che fornisce la funzione richiesta siano uguali.
Il modulo deve contenere la funzione MAIN, che costituisce il punto di ingresso per il modulo. Tale funzione viene inclusa automaticamente se il modulo viene creato automaticamente. All'interno di MAIN, è possibile codificare ESQL in modo da configurare il funzionamento del nodo. Se si include ESQL all'interno del modulo che dichiara le variabili, le costanti, le funzioni e le procedure, tali elementi sono solo di ambito locale e possono essere utilizzati all'interno di questo singolo modulo.
Se si desidera riutilizzare costanti, funzioni o procedure ESQL, è necessario dichiararle al livello dello schema broker. E' possibile fare riferimento a tali elementi da qualsiasi risorsa all'interno dello schema broker, nello stesso o in un altro progetto. Se si desidera utilizzare tale tecnica, immettere il percorso completo della procedura oppure includere un'istruzione PATH che imposta il qualificatore. L'istruzione PATH deve essere codificata nello stesso file ESQL, ma non all'interno di MODULE.