**Source URL:** https://limited.veevavault.dev/quality/vault-sdk/developing-code

# 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

Developing Vault extensions means writing your own implementation of Vault [entry points](/quality/vault-sdk/entry-points/), such as a `RecordTrigger` or `RecordAction`. Entry points are annotated with the entry point annotation. For example, a [record trigger](/quality/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:

```java
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](/quality/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](/quality/vault-sdk/sdk-debugger/deploy-and-run-debugged-code)  
**Next:** [POM Setup](/quality/vault-sdk/developing-code/pom-setup)