> ## 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.

# Project members

> How to work with project members in CRMScript.

A project always has a project manager or owner. In addition, it can have (and usually has) project members.

<Tip>
  Read about [working with persons][1].
</Tip>

## View project member info

```crmscript! theme={null}
Integer projectMemberId = 9;
NSProjectAgent agent;
NSProjectMember member = agent.GetProjectMember(projectMemberId);

printLine(member.GetFullName());
```

## List project members

### NSProjectMember\[] GetProjectMembers(Integer projectId)

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

foreach (NSProjectMember m in memberList) {
  printLine(m.GetLastname());
}
```

### NSProjectMember\[] GetProjectMembersById(Integer\[] projectIds)

```crmscript! theme={null}
NSProjectAgent agent;

Integer[] projectIds;
projectIds.pushBack(1);
projectIds.pushBack(3);
projectIds.pushBack(42);

NSProjectMember[] memberList = agent.GetProjectMembersById(projectIds);
```

### Get members from current project

```crmscript theme={null}
NSProjectAgent agent;
NSProjectEntity p = agent.GetProjectEntity(1);
NSProjectMember[] memberList = p.GetProjectMembers();
```

## Register a member

```crmscript! theme={null}
NSProjectAgent agent;
NSProjectMember member = agent.CreateDefaultProjectMember();

member.SetPersonId(7);
member.SetProjectId(4);
member.SetProjectMemberTypeId(2);

member = agent.SaveProjectMember(member);

printLine(member.GetProjectmemberId().toString());
```

### List available roles

```crmscript! theme={null}
SearchEngine se;
se.addFields("PMembType", "PMembType_id,name");
print(se.executeTextTable());
```

## Add members to project

`AddProjectMembers()` will connect 1 or more project members to a project.

```crmscript theme={null}
NSProjectAgent agent;
NSProjectMember member = agent.GetProjectMember(4);

Integer projectId = 1;

NSProjectMember[] memberList;
memberList.pushBack(member);

agent.AddProjectMembers(projectId, memberList);
```

## Update a member

To update a member, you have to get the member, set the appropriate values, and then call `UpdateProjectMember()`.

```crmscript theme={null}
NSProjectAgent agent;
NSProjectMember member = agent.GetProjectMember(5);
member.SetProjectMemberTypeId(3);
member = agent.UpdateProjectMember(member);
```

## Delete members

### Void DeleteProjectMemberByIds(Integer\[] projectMemberIds)

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

Integer[] memberIds;
memberIds.pushBack(5);
memberIds.pushBack(17);
memberIds.pushBack(23);

agent.DeleteProjectMemberByIds(memberIds);
```

### Void DeleteProjectMembers(Integer projectId, Integer\[] memberIds)

Removes members from a selected project.

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

Integer[] memberIds;
memberIds.pushBack(5);

agent.DeleteProjectMembers(8,memberIds);
```

## Reference

### NSProjectMember

| Field             | Get method               | Description        |
| :---------------- | :----------------------- | :----------------- |
| projectmember\_id | GetProjectmemberId()     | ID                 |
| project\_id       | GetProjectId()           | project            |
| mtype\_idx        | GetProjectMemberTypeId() | role (member type) |
| person\_id        | GetPersonId()            | ID of person       |

For a complete list of fields, see the [database reference][2].

[1]: ../contact/index

[2]: ../../../../database/tables/projectmember


## Related topics

- [Project members](/en/project/learn/project-members/index.md)
- [Projects](/en/project/dev/index.md)
- [Members](/en/api/reference/restful/rest/project/members.md)
- [Add project members](/en/project/learn/project-members/add.md)
- [Update Project Members](/en/api/reference/restful/agent/project_agent/update-project-members.md)
