**Source URL:** https://general.veevavault.dev/regulatory/vault-sdk/developing-code.md

# Developing Code



To develop code with Vault Java SDK, you need:

* A Maven project

* A correctly configured POM file

* A `src` folder under the `javasdk` folder

## Development Fundamentals {#development-fundamentals}

Developing Vault extensions means writing your own implementation of Vault [entry points](/vault-sdk/entry-points/), such as a `RecordTrigger` or `RecordAction`. Entry points are annotated with the entry point annotation. For example, a [record trigger](/vault-sdk/entry-points/triggers/record-triggers/) must implement the `RecordTrigger` interface and annotate the class with the `@RecordTriggerInfo` to provide deployment information.

The following is a skeleton code example of a trigger class implementation:

```
package com.veeva.vault.custom.triggers;

import com.veeva.vault.sdk.api.data.RecordTriggerInfo;
import com.veeva.vault.sdk.api.data.RecordTrigger;
import com.veeva.vault.sdk.api.data.RecordEvent;
import com.veeva.vault.sdk.api.data.RecordTriggerContext;
import com.veeva.vault.sdk.api.data.RecordChange;


@RecordTriggerInfo(object = "object_name__c", events = {RecordEvent.BEFORE_INSERT})
public class ObjectTrigger implements RecordTrigger {

    public void execute(RecordTriggerContext recordTriggerContext) {

        // process each input record.
        for (RecordChange recordChange : recordTriggerContext.getRecordChanges()) {
       }
    }
}

```

A Vault extension's implementation often uses [services](/vault-sdk/services/) provided by the Vault Java SDK. With these services, you can apply custom business logic such as retrieving and performing data operations according to business requirements.



---

**Previous:** [Deploy & Run Debugged Code](/regulatory/vault-sdk/sdk-debugger/deploy-and-run-debugged-code)  
**Next:** [POM Setup](/regulatory/vault-sdk/developing-code/pom-setup)