> ## Documentation Index
> Fetch the complete documentation index at: https://docs.superoffice.com/llms.txt
> Use this file to discover all available pages before exploring further.

# NSProjectAgent

> Collection of all services that work with Project data.

Collection of all services that work with Project data.

## Constructors

### NSProjectAgent()

```crmscript theme={null}
NSProjectAgent
```

Collection of all services that work with Project data.

## Methods

## AddProjectMembers(Integer,NSProjectMember\[])

Adds multiple project members to a project

```crmscript theme={null}
Void AddProjectMembers(Integer projectEntityId, NSProjectMember[] projectMembers)
```

**Returns:** [CRMScript.Global.Void](CRMScript.Global.Void)

## CreateDefaultProjectEntity()

Sets default values into a new NSProjectEntity.

```crmscript theme={null}
NSProjectEntity CreateDefaultProjectEntity()
```

**Returns:** [CRMScript.NetServer.NSProjectEntity](CRMScript.NetServer.NSProjectEntity)

<Note>
  NetServer calculates default values (for example, Country) on the entity, which is required when creating/storing a new instance
</Note>

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
NSProjectEntity thing = agent.CreateDefaultProjectEntity();
thing = agent.SaveProjectEntity(thing);
```

## CreateDefaultProjectEventEntity()

Sets default values into a new NSProjectEventEntity.

```crmscript theme={null}
NSProjectEventEntity CreateDefaultProjectEventEntity()
```

**Returns:** [CRMScript.NetServer.NSProjectEventEntity](CRMScript.NetServer.NSProjectEventEntity)

<Note>
  NetServer calculates default values (for example, Country) on the entity, which is required when creating/storing a new instance
</Note>

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
NSProjectEventEntity thing = agent.CreateDefaultProjectEventEntity();
thing = agent.SaveProjectEventEntity(thing);
```

## CreateDefaultProjectMember()

Sets default values into a new NSProjectMember.

```crmscript theme={null}
NSProjectMember CreateDefaultProjectMember()
```

**Returns:** [CRMScript.NetServer.NSProjectMember](CRMScript.NetServer.NSProjectMember)

<Note>
  NetServer calculates default values (for example, Country) on the entity, which is required when creating/storing a new instance
</Note>

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
NSProjectMember thing = agent.CreateDefaultProjectMember();
thing = agent.SaveProjectMember(thing);
```

## CreateNewEntry()

Creates a new project based on external duplicate

```crmscript theme={null}
Integer CreateNewEntry(NSDuplicateEntry duplicate)
```

**Returns:** [CRMScript.Global.Integer](CRMScript.Global.Integer)

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
NSDuplicateEntry duplicate;
Integer res = agent.CreateNewEntry(duplicate);
```

## DeleteProjectEntity(Integer)

Deletes the NSProjectEntity

```crmscript theme={null}
DeleteProjectEntity(Integer projectEntity)
```

**Returns:** [CRMScript.Global.Void](CRMScript.Global.Void)

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
agent.DeleteProjectEntity(123);
```

## DeleteProjectEventEntity(Integer)

Deletes the NSProjectEventEntity

```crmscript theme={null}
DeleteProjectEventEntity(Integer projectEventEntity)
```

**Returns:** [CRMScript.Global.Void](CRMScript.Global.Void)

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
agent.DeleteProjectEventEntity(123);
```

## DeleteProjectEventEntityFromProjectId(Integer)

Deletes a project event based on a project ID. Does not delete the project, but does delete the published and ExternalEvent and AudienceVisibility records.

```crmscript theme={null}
Void DeleteProjectEventEntityFromProjectId(Integer projectId)
```

**Returns:** [CRMScript.Global.Void](CRMScript.Global.Void)

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
Integer projectId;
agent.DeleteProjectEventEntityFromProjectId(projectId);
```

## DeleteProjectMember(Integer)

Deletes the NSProjectMember

```crmscript theme={null}
DeleteProjectMember(Integer projectMember)
```

**Returns:** [CRMScript.Global.Void](CRMScript.Global.Void)

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
agent.DeleteProjectMember(123);
```

## DeleteProjectMemberByIds(Integer\[])

Deletes project-member rows.

```crmscript theme={null}
Void DeleteProjectMemberByIds(Integer[] projectMemberIds)
```

**Returns:** [CRMScript.Global.Void](CRMScript.Global.Void)

## DeleteProjectMembers(Integer,Integer\[])

Deletes the given project members from a project

```crmscript theme={null}
Void DeleteProjectMembers(Integer projectEntityId, Integer[] memberIds)
```

**Returns:** [CRMScript.Global.Void](CRMScript.Global.Void)

## GetDuplicateRules()

Retrieve all available duplicate rules for project

```crmscript theme={null}
NSDuplicateRule[] GetDuplicateRules()
```

**Returns:** [CRMScript.NetServer.NSDuplicateRule](CRMScript.NetServer.NSDuplicateRule)\[]

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
NSDuplicateRule[] res = agent.GetDuplicateRules();
```

## GetDuplicates(String)

Gets duplicates(exact or similar in the database) based on the name

```crmscript theme={null}
NSDuplicateEntry[] GetDuplicates(String name)
```

**Returns:** [CRMScript.NetServer.NSDuplicateEntry](CRMScript.NetServer.NSDuplicateEntry)\[]

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
String name;
NSDuplicateEntry[] res = agent.GetDuplicates(name);
```

## GetMyMemberProjects()

Returns projects where an user is project member.

```crmscript theme={null}
NSProject[] GetMyMemberProjects()
```

**Returns:** [CRMScript.NetServer.NSProject](CRMScript.NetServer.NSProject)\[]

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
NSProject[] res = agent.GetMyMemberProjects();
```

## GetMyProjectEvents()

Gets all project events that belongs to the currently logged-on user.

```crmscript theme={null}
NSProjectEvent[] GetMyProjectEvents()
```

**Returns:** [CRMScript.NetServer.NSProjectEvent](CRMScript.NetServer.NSProjectEvent)\[] - The list of events is filtered by the Audience Visibility restrictions set when the project event is created.

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
NSProjectEvent[] res = agent.GetMyProjectEvents();
```

## GetMyProjects(Bool)

Returns projects belonging to an associate. If memberProjects is false only the projects where the associate is project responsible is returned, otherwise both the projects where the associate is project responsible and project member is returned.

```crmscript theme={null}
NSProject[] GetMyProjects(Bool includeMemberProjects)
```

**Returns:** [CRMScript.NetServer.NSProject](CRMScript.NetServer.NSProject)\[]

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
Bool includeMemberProjects;
NSProject[] res = agent.GetMyProjects(includeMemberProjects);
```

## GetMyPublishedProjects()

Gets published projects from the logged in user.

```crmscript theme={null}
NSProject[] GetMyPublishedProjects()
```

**Returns:** [CRMScript.NetServer.NSProject](CRMScript.NetServer.NSProject)\[]

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
NSProject[] res = agent.GetMyPublishedProjects();
```

## GetNextMilestone(Integer)

```crmscript theme={null}
NSAppointment GetNextMilestone(Integer projectId)
```

**Returns:** [CRMScript.NetServer.NSAppointment](CRMScript.NetServer.NSAppointment)

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
Integer projectId;
NSAppointment res = agent.GetNextMilestone(projectId);
```

## GetNextProjectStatus(Integer)

```crmscript theme={null}
Integer GetNextProjectStatus(Integer projectId)
```

**Returns:** [CRMScript.Global.Integer](CRMScript.Global.Integer)

## GetProject(Integer)

Gets an NSProject object.

```crmscript theme={null}
NSProject GetProject(Integer projectId)
```

**Returns:** [CRMScript.NetServer.NSProject](CRMScript.NetServer.NSProject)

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
NSProject thing = agent.GetProject(123);
```

## GetProjectEntity(Integer)

Gets an NSProjectEntity object.

```crmscript theme={null}
NSProjectEntity GetProjectEntity(Integer projectEntityId)
```

**Returns:** [CRMScript.NetServer.NSProjectEntity](CRMScript.NetServer.NSProjectEntity)

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
NSProjectEntity thing = agent.GetProjectEntity(123);
```

## GetProjectEntityWithoutMembers(Integer)

Get a project entity with no project members. Project members property is always an empty array.

```crmscript theme={null}
NSProjectEntity GetProjectEntityWithoutMembers(Integer projectEntityId)
```

**Returns:** [CRMScript.NetServer.NSProjectEntity](CRMScript.NetServer.NSProjectEntity)

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
NSProjectEntity thing = agent.GetProjectEntityWithoutMembers(123);
```

## GetProjectEvent(Integer)

Gets an NSProjectEvent object.

```crmscript theme={null}
NSProjectEvent GetProjectEvent(Integer projectEventId)
```

**Returns:** [CRMScript.NetServer.NSProjectEvent](CRMScript.NetServer.NSProjectEvent)

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
NSProjectEvent thing = agent.GetProjectEvent(123);
```

## GetProjectEventEntity(Integer)

Gets an NSProjectEventEntity object.

```crmscript theme={null}
NSProjectEventEntity GetProjectEventEntity(Integer projectEventEntityId)
```

**Returns:** [CRMScript.NetServer.NSProjectEventEntity](CRMScript.NetServer.NSProjectEventEntity)

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
NSProjectEventEntity thing = agent.GetProjectEventEntity(123);
```

## GetProjectEventEntityFromProjectId(Integer)

Gets an NSProjectEventEntity based on a projectId.

```crmscript theme={null}
NSProjectEventEntity GetProjectEventEntityFromProjectId(Integer projectId)
```

**Returns:** [CRMScript.NetServer.NSProjectEventEntity](CRMScript.NetServer.NSProjectEventEntity)

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
Integer projectId;
NSProjectEventEntity res = agent.GetProjectEventEntityFromProjectId(projectId);
```

## GetProjectEventList(Integer\[])

Gets an array of NSProjectEvent objects.

```crmscript theme={null}
NSProjectEvent[] GetProjectEventList(Integer[]  projectEventIds)
```

**Returns:** [CRMScript.NetServer.NSProjectEvent](CRMScript.NetServer.NSProjectEvent)\[]

**Example:**

```crmscript theme={null}
Integer[] ids;
NSProjectAgent agent;
NSProjectEvent[] res = agent.GetProjectEventList(ids);
```

## GetProjectEventOnPerson(Integer,Integer)

Gets an NSProjectEvent object from a project and a person.

```crmscript theme={null}
NSProjectEvent GetProjectEventOnPerson(Integer projectId, Integer personId)
```

**Returns:** [CRMScript.NetServer.NSProjectEvent](CRMScript.NetServer.NSProjectEvent)

## GetProjectEventsOnPerson(Integer)

Gets all project events that belongs to the person specified.

```crmscript theme={null}
NSProjectEvent[] GetProjectEventsOnPerson(Integer personId)
```

**Returns:** [CRMScript.NetServer.NSProjectEvent](CRMScript.NetServer.NSProjectEvent)\[] - The list of events are filtered by the Audience Visibility restrictions set when the project event is created.

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
Integer personId;
NSProjectEvent[] res = agent.GetProjectEventsOnPerson(personId);
```

## GetProjectImage(Integer)

Returns the project image that is displayed in the CRM application.

```crmscript theme={null}
NSImage GetProjectImage(Integer projectId)
```

**Returns:** [CRMScript.NetServer.NSImage](CRMScript.NetServer.NSImage)

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
Integer projectId;
NSImage res = agent.GetProjectImage(projectId);
```

## GetProjectList(Integer\[])

Gets an array of Project objects.

```crmscript theme={null}
NSProject[] GetProjectList(Integer[] projectIds)
```

**Returns:** [CRMScript.NetServer.NSProject](CRMScript.NetServer.NSProject)\[]

**Example:**

```crmscript theme={null}
Integer[] ids;
NSProjectAgent agent;
NSProject[] res = agent.GetProjectList(ids);
```

## GetProjectMember(Integer)

Gets an NSProjectMember object.

```crmscript theme={null}
NSProjectMember GetProjectMember(Integer projectMemberId)
```

**Returns:** [CRMScript.NetServer.NSProjectMember](CRMScript.NetServer.NSProjectMember)

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
NSProjectMember thing = agent.GetProjectMember(123);
```

## GetProjectMembers(Integer)

Returns an array of project members

```crmscript theme={null}
NSProjectMember[] GetProjectMembers(Integer projectId)
```

**Returns:** [CRMScript.NetServer.NSProjectMember](CRMScript.NetServer.NSProjectMember)\[]

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
Integer projectId;
NSProjectMember[] res = agent.GetProjectMembers(projectId);
```

## GetProjectMembersById(Integer\[])

Returns an array of project members.

```crmscript theme={null}
NSProjectMember[] GetProjectMembersById(Integer[] projectMemberIds)
```

**Returns:** [CRMScript.NetServer.NSProjectMember](CRMScript.NetServer.NSProjectMember)\[]

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
Integer rojectMemberIds;
NSProjectMember[] res = agent.GetProjectMembersById(projectMemberIds);
```

## GetProjectsFromContact(Integer)

Returns all projects where the given contact has project members.

```crmscript theme={null}
NSProject[] GetProjectsFromContact(Integer contactId)
```

**Returns:** [CRMScript.NetServer.NSProject](CRMScript.NetServer.NSProject)\[]

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
Integer contactId;
NSProject[] res = agent.GetProjectsFromContact(contactId);
```

## GetProjectsFromPerson(Integer)

Returns all projects where the person is project member.

```crmscript theme={null}
NSProject[] GetProjectsFromPerson(Integer personId)
```

**Returns:** [CRMScript.NetServer.NSProject](CRMScript.NetServer.NSProject)\[]

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
Integer personId;
NSProject[] res = agent.GetProjectsFromPerson(personId);
```

## GetPublishedProject(Integer)

Gets published project by project ID.

```crmscript theme={null}
NSProject GetPublishedProject(Integer projectId)
```

**Returns:** [CRMScript.NetServer.NSProject](CRMScript.NetServer.NSProject)

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
Integer projectId;
NSProject res = agent.GetPublishedProject(projectId);
```

## GetPublishedProjects(Integer\[])

Gets published projects by project IDs.

```crmscript theme={null}
NSProject[] GetPublishedProjects(Integer[] projectIds)
```

**Returns:** [CRMScript.NetServer.NSProject](CRMScript.NetServer.NSProject)\[]

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
Integer[] projectIds;
NSProject[] res = agent.GetPublishedProjects(projectIds);
```

## GetPublishedProjectsOnPersonId(Integer)

Gets published projects where person is a member

```crmscript theme={null}
NSProject[] GetPublishedProjectsOnPersonId(Integer personId)
```

**Returns:** [CRMScript.NetServer.NSProject](CRMScript.NetServer.NSProject)\[]

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
Integer personId;
NSProject[] res = agent.GetPublishedProjectsOnPersonId(personId);
```

## HasGuide(Integer)

```crmscript theme={null}
Bool HasGuide(Integer projectId)
```

**Returns:** [CRMScript.Global.Bool](CRMScript.Global.Bool) - Does this project have a guide associated with its project type?

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
Integer projectId;
Bool res = agent.HasGuide(projectId);
```

## HasGuideActivities(Integer)

```crmscript theme={null}
Bool HasGuideActivities(Integer projectId)
```

**Returns:** [CRMScript.Global.Bool](CRMScript.Global.Bool)

## IsNumberValid(Integer,String)

Checks if the number is unique or required.

```crmscript theme={null}
Bool IsNumberValid(Integer contactId, String number)
```

**Returns:** [CRMScript.Global.Bool](CRMScript.Global.Bool)

<Note>
  The setting is configured from admin under system options.
</Note>

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
Integer contactId;
String number;
Bool res = agent.IsNumberValid(contactId, number);
```

## Merge(Integer,Integer,Bool)

Merges two projects into one, removing the source project in the process

```crmscript theme={null}
Void Merge(Integer sourceProjectId, Integer destinationProjectId, Bool replaceEmptyFieldsOnDestination)
```

**Returns:** [CRMScript.Global.Void](CRMScript.Global.Void)

## OfferAutoNextStatusOnAppointmentCompleted(Integer)

```crmscript theme={null}
Bool OfferAutoNextStatusOnAppointmentCompleted(Integer appointmentId)
```

**Returns:** [CRMScript.Global.Bool](CRMScript.Global.Bool)

## SaveProjectEntity(NSProjectEntity)

Updates the existing NSProjectEntity or creates a new NSProjectEntity if the  ID parameter is 0.

```crmscript theme={null}
NSProjectEntity SaveProjectEntity(NSProjectEntity projectEntity)
```

**Returns:** [CRMScript.NetServer.NSProjectEntity](CRMScript.NetServer.NSProjectEntity) - New or updated NSProjectEntity.

**Example:**

```crmscript theme={null}
NSProject  agent;
NSProjectEntity thing = agent.CreateDefaultProjectEntity();
thing = agent.SaveProjectEntity(thing);
```

## SaveProjectEntityWithoutMembers(NSProjectEntity)

Save or update a project entity, the project members are ignored.

```crmscript theme={null}
NSProjectEntity SaveProjectEntityWithoutMembers(NSProjectEntity projectEntity)
```

**Returns:** [CRMScript.NetServer.NSProjectEntity](CRMScript.NetServer.NSProjectEntity) - New or updated NSProjectEntity.

**Example:**

```crmscript theme={null}
NSProject  agent;
NSProjectEntity thing = agent.CreateDefaultProjectEntity();
thing = agent.SaveProjectEntityWithoutMembers(thing);
```

## SaveProjectEventEntity(NSProjectEventEntity)

Updates the existing NSProjectEventEntity or creates a new NSProjectEventEntity if the ID parameter is 0.

Returns.

```crmscript theme={null}
NSProjectEventEntity SaveProjectEventEntity(NSProjectEventEntity entity)
```

**Returns:** [CRMScript.NetServer.NSProjectEventEntity](CRMScript.NetServer.NSProjectEventEntity) - The new or updated NSProjectEventEntity.

**Example:**

```crmscript theme={null}
NSProject agent;
NSProjectEventEntity thing = agent.CreateDefaultProjectEventEntity();
thing = agent.SaveProjectEventEntity(thing);
```

## SaveProjectMember(NSProjectMember)

Updates the existing NSProjectMember or creates a new NSProjectMember if the id parameter is 0

```crmscript theme={null}
NSProjectMember SaveProjectMember(NSProjectMember projectMember)
```

**Returns:** [CRMScript.NetServer.NSProjectMember](CRMScript.NetServer.NSProjectMember)

**Example:**

```crmscript theme={null}
NSProject  agent;
NSProjectMember thing = agent.CreateDefaultProjectMember();
thing = agent.SaveProjectMember(thing);
```

## SaveProjectMembersFunctionAndComment(Integer\[],Integer,String)

Saves role and comment on an array of project members represented by IDs.

```crmscript theme={null}
Void SaveProjectMembersFunctionAndComment(Integer[] projectMemberIds, Integer roleId, String comment)
```

**Returns:** [CRMScript.Global.Void](CRMScript.Global.Void)

## SetDuplicateRulesStatus(NSDuplicateRule\[])

Sets which duplicate rules should be active or not

```crmscript theme={null}
Void SetDuplicateRulesStatus(NSDuplicateRule[] rules)
```

**Returns:** [CRMScript.Global.Void](CRMScript.Global.Void)

## SetProjectImage(Integer,NSImage)

Stores the project image that is displayed in the CRM application.

```crmscript theme={null}
Void SetProjectImage(Integer projectId, NSImage image)
```

**Returns:** [CRMScript.Global.Void](CRMScript.Global.Void)

## UpdateProjectMember(NSProjectMember)

Updates an NSProjectMember row.

```crmscript theme={null}
NSProjectMember UpdateProjectMember(NSProjectMember projectMember)
```

**Returns:** [CRMScript.NetServer.NSProjectMember](CRMScript.NetServer.NSProjectMember)

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
NSProjectMember projectMember;
NSProjectMember res = agent.UpdateProjectMember(projectMember);
```

## ValidateProjectEntity(NSProjectEntity)

Checks that entity is ready for saving, return error messages by field.

```crmscript theme={null}
Map ValidateProjectEntity(NSProjectEntity projectEntity)
```

**Returns:** [CRMScript.Native.Map](CRMScript.Native.Map)

**Example:**

```crmscript theme={null}
NSProjectAgent agent;
NSProjectEntity projectEntity;
Map res = agent.ValidateProjectEntity(NSProjectEntity);
```


## Related topics

- [Project](/en/project/learn/index.md)
- [Projects](/en/mobile/project/index.md)
- [project](/en/api/mdo-providers/reference/project.md)
- [Get Project](/en/api/reference/restful/agent/project_agent/get-project.md)
