Product Portfolio and Product Management Adapter
Product portfolio and product adapter is used to support product management activities, both for individual products and product portfolios. These activities can include tasks like planning, monitoring, and tracking various aspects of products and product portfolios. You can map these activities with the functionalities of the adapter. This mapping aligns user tasks, assignments, timelines, milestones, and resource allocations with specific products or product portfolios.
Usage
The adapter components are used to map and validate activities related to product and product portfolio.
List of Requirements
The product portfolio and product adapter must meet the following requirements:
-
One-to-One Mapping: The component must have one to one mapping with product or product portfolio.
-
Maintaining Data Integrity: It should maintain all mapping information and serve as the source of truth for validation purposes.
- Administrative Privileges
Administrative privileges should be provided to perform necessary activities within the component.
- Secure Connection with Backend Systems and Credential Handling
The component should establish secure connections with backend systems, and any sensitive credentials required for authentication should be securely stored in a secrets management tool as a security best practice.
APIs and Interfaces
public interface ElabPortfolioAndProductService {
boolean testConnection();
User getUserContext();
ProjectCreationResponseBean addProjectBoard(ProjectBoardRequestBean request);
List<UserRoleBean> getCustomRole();
List<SearchResponse> searchByKey(ProjectSearchRequestBean request);
List<SearchResponse> searchByLabels(ProjectSearchRequestBean request);
Object getAgileTicket(String key);
Object createAgileTicket(ProjectTicketRequestBean request);
boolean deleteAgileTicket(String key);
boolean associateLabels(List<Labels> lables, String key);
boolean deAssociateLables(List<Labels> lables, String key);
ProjectCreationResponseBean createProject(ProjectCreationRequestBean request);
PortfolioCreationResponseBean createPortfolio(PortfolioCreationRequestBean request);
ProjectResponseBean getProject(String Key);
PortfolioDetailsBean getPortfolio(String key);
PortfolioDetailsBean getWorkspaces(PaginationRequest request);
ProjectResponseBean getProjectsByWorkspaces(String workspaceId);
boolean createProjectUserMapping(ProjectUserMappingRequestBean request);
boolean removeProjectUserMapping(ProjectUserMappingRequestBean request);
AgileWorkspaceResponseBean createWorkspace(AgileWorkspaceRequestBean request);
AgileWorkspaceResponseBean updateWorkspace(AgileWorkspaceRequestBean request);
boolean deleteWorkspace(String workspaceId);
}
The interface methods to be implemented and the associated classes are as follows:
-
TestConnection()
-
Usage: The interface method is used for testing the connection of the component.
-
Input - The connection should pull the credentials from the secretly stored username and password from the secret store manager.
-
Output - The status of the connection.
-
-
GetUserContext()
-
Usage: The interface method is used to get the context of the user at the component level.
-
Input: The authentication token for the user is passed to the interface, which is then used to fetch user details from the component.
-
Output: It returns the user context, which includes various user-related attributes such as self, name, key, accountId, avatarUrls, displayName, active status, timeZone, and accountType. This context provides comprehensive information about the user.
Copypublic class User {
@JsonProperty("self")
private String self;
@JsonProperty("name")
private String name;
@JsonProperty("key")
private String key;
@JsonProperty("accountId")
private String accountId;
@JsonProperty("avatarUrls")
private AvatarUrls avatarUrls;
@JsonProperty("displayName")
private String displayName;
@JsonProperty("active")
private Boolean active;
@JsonProperty("timeZone")
private String timeZone;
@JsonProperty("accountType")
private String accountType;
}
-
-
AddProjectBoard (ProjectBoardRequestBean request)
-
Usage: This interface method is used to add a project to the component, which will be mapped to a product.
-
Input: It takes a request object with the project's name and key.
Copypublic class ProjectBoardRequestBean {
private String name;
private String projectKey;
}
-
Output - It returns a response object containing information about the created project.
Copypublic class ProjectCreationResponseBean {
private Long id;
private String self;
private String key;
}
-
-
GetCustomRole()
-
Usage: The interface is required to fetch the roles assigned to a user in the component.
-
Input: It uses an authentication token to fetch user details.
-
Output: It returns a list of role objects representing the roles assigned to the user.
Copypublic class UserRoleBean {
private String id;
private String name;
private String description;
private String self;
private Object scope;
}
-
-
SearchByKey(ProjectSearchRequestBean request)
-
Usage: The interface is used to find project details by its key.
-
Input : It takes a search request object with parameters such as project name, key, project ID, labels, and a Boolean for complete date.
Copypublic class ProjectSearchRequestBean {
private String projectName;
private String key;
private String projectId;
private List<String> labels;
private boolean completeDate;
} -
Output : It returns a response object as a list of search results.
Copypublic class SearchResponse implements Serializable {
private String id;
private String title;
private String description;
private String link;
private String createdBy;
private String createdByAvatar;
private String status;
private String statusColor;
private String createdOn;
private List<String> labels;
private String key;
}
-
-
SearchByLabels(ProjectSearchRequestBean request)
-
Usage: The interface is used to find project details by labels.
-
Input: It takes a search request object with parameters such as project name, key, project ID, labels, and a Boolean for complete date.
Copypublic class ProjectSearchRequestBean {
private String projectName;
private String key;
private String projectId;
private List<String> labels;
private boolean completeDate;
} -
Output : It returns a response object as a list of search results.
Copypublic class SearchResponse implements Serializable {
private String id;
private String title;
private String description;
private String link;
private String createdBy;
private String createdByAvatar;
private String status;
private String statusColor;
private String createdOn;
private List<String> labels;
private String key;
}
-
-
GetAgileTicket (String key)
-
Usage: The interface is used to find the details of an agile ticket by its key.
-
Input : It takes the key of the ticket.
-
Output : It returns a response object that holds generic data related to the ticket.
-
-
CreateAgileTicket(ProjectTicketRequestBean request)
-
Usage: The interface is used to open a ticket under a particular project.
-
Input : It takes a request object with details such as project name, summary, description, issue type, parent key, assignee, and labels.
Copypublic class TicketRequestBean {
private String projectName;
@NotNull
private String summary;
private String description;
@NotNull
private String issueType;
private String parentKey;
private String assignee;
private List<String> labels;
} -
Output : It returns a response object as a Java object.
-
-
DeleteAgileTicket(String key)
-
Usage: The interface is used to delete a ticket under a particular project.
-
Input: It takes the key of the agile ticket.
-
Output: It returns a Boolean value indicating whether the ticket was deleted or not.
-
-
AssociateLabels(List<Labels> lables, String key)
-
Usage: The interface is used to associate labels to a ticket.
-
Input - It takes a list of labels and the key of the ticket.
-
Output - It returns a Boolean value indicating whether the labels were successfully added or not.
-
-
DeAssociateLables(List<Labels> lables, String key)
-
Usage: The interface is used to remove labels from a ticket.
-
Input: It takes a list of labels and the key of the ticket.
-
Output: It returns a Boolean value indicating whether the labels were successfully removed or not.
-
-
CreateProject(ProjectCreationRequestBean request)
-
Usage: The interface is used to create an agile project.
-
Input: It takes a request object with project details such as project ID, name, key, and description.
Copypublic class ProjectRequestBean {
private String projectId;
private String projectName;
private String projectKey;
private String description;
} -
Output: It returns a response object containing information about the created project.
Copypublic class ProjectCreationResponseBean {
private Long id;
private String self;
private String key;
}
-
-
CreatePortfolio(PortfolioCreationRequestBean request)
-
Usage: The interface is used to create an agile portfolio.
-
Input : It takes a request object with portfolio details such as portfolio ID, name, workspace ID, and description.
Copypublic class PortfolioRequestBean {
private String portfolioId;
private String portfolioName;
private String workspaceId;
private String description;
} -
Output : It returns a response object containing information about the created portfolio.
Copypublic class PortfolioCreationResponseBean {
private Long id;
private String workspaceName;
private String description;
private List<String> projectNames;
}
-
-
GetProject(String Key)
-
Usage: This interface method is used to get details of an agile project by its key.
-
Input : It takes the key of the project.
-
Output : It returns a response object containing project details.
Copypublic class ProjectResponseBean {
private String self;
private String id;
private String key;
private String name;
private String projectTypeKey;
private Boolean simplified;
private String description;
}
-
-
GetPortfolio(StringKey)
-
Usage: This interface method is used to get details of an agile portfolio by its key.
-
Input : It takes the key of the portfolio.
-
Output : It returns a response object containing portfolio details.
Copypublic class PortfolioDetailsBean {
private String id;
private String portfolioId;
private String portfolioName;
private String workspaceId;
private String workspaceName;
private String toolName;
private String referencePrefix;
private Boolean productLine;
private String workspaceType;
private List<AgileProjectBean> projects;
}
-
-
GetWorkspaces(PaginationRequest request)
-
Usage: This interface method is used to get agile workspaces.
-
Input - It takes a request object for pagination.
-
Output : It returns a response object containing workspace details.
Copypublic class PortfolioDetailsBean {
private String id;
private String portfolioId;
private String portfolioName;
private String workspaceId;
private String workspaceName;
private String toolName;
private String referencePrefix;
private Boolean productLine;
private String workspaceType;
private List<AgileProjectBean> projects;
}
-
-
GetProjectsByWorkspaces(String workspaceId)
-
Usage: This interface method is used to get all projects associated with a particular workspace.
-
Input : It takes the key of the workspace ID.
-
Output : It returns a response object containing project details.
Copypublic class ProjectResponseBean {
private String self;
private String id;
private String key;
private String name;
private String projectTypeKey;
private Boolean simplified;
private String description;
}
-
-
CreateProjectUserMapping(ProjectUserMappingRequestBean request)
-
Usage: This interface method is used to assign users to a project.
-
Input : It takes a request object with details like project key, user email, username, project ID, and role IDs.
Copypublic class ProjectUserMappingRequestBean {
private String projectKey;
private String userEmailId;
private String userName;
private String projectId;
private Set<String> roleIds;
} -
Output: It returns a Boolean value indicating whether the user mapping was successful.
-
-
RemoveProjectUserMapping(ProjectUserMappingRequestBean request)
-
Usage: This interface method is used to remove users from a project.
-
Input: It takes a request object with details like project key, user email, username, project ID, and role IDs.
Copypublic class ProjectUserMappingRequestBean {
private String projectKey;
private String userEmailId;
private String userName;
private String projectId;
private Set<String> roleIds;
}
-
Output: It returns a Boolean value indicating whether the user removal was successful.
-
-
CreateWorkspace(AgileWorkspaceRequestBean request)
-
Usage: This interface method is used to create an agile workspace.
-
Input: It takes a request object with workspace details such as portfolio ID, name, workspace ID, description, and other attributes.
Copypublic class AgileWorkspaceRequestBean {
private String portfolioId;
private String portfolioName;
//workspace id is the actual workspace line id in aha
private String workspaceId;
private String description;
private String referencePrefix;
private Boolean productLine;
private String productLineType;
}
-
Output: It returns a response object containing information about the created workspace.
Copypublic class AgileAhaWorkspaceResponseBean {
private String portfolioId;
private String portfolioName;
private String workspaceId;
private String workspaceName;
private String toolName;
private String referencePrefix;
private Boolean productLine;
private String productLineType;
private String workspaceType;
private String description;
private String status;
private Boolean mappingDone;
}
-
-
UpdateWorkspace(AgileWorkspaceRequestBean request)
-
Usage: The interface is used to update an agile workspace.
-
Input - It takes a request object with workspace details such as portfolio ID, name, workspace ID, description, and other attributes.
Copypublic class AgileWorkspaceRequestBean {
private String portfolioId;
private String portfolioName;
//workspace id is the actual workspace line id
private String workspaceId;
private String description;
private String referencePrefix;
private Boolean productLine;
private String productLineType;
} -
Output: It returns a response object containing information about the created workspace.
Copypublic class AgileAhaWorkspaceResponseBean {
private String portfolioId;
private String portfolioName;
private String workspaceId;
private String workspaceName;
private String toolName;
private String referencePrefix;
private Boolean productLine;
private String productLineType;
private String workspaceType;
private String description;
private String status;
private Boolean mappingDone;
}
-
-
DeleteWorkspace (String workspaceId)
-
Usage: The interface is used to delete an agile workspace
-
Input: It takes the ID of the workspace.
-
Output: It returns a Boolean value indicating whether the workspace was successfully deleted.
-
The following APIs consume the interfaces that you have built above:
-
ProductLine Creation
-
ProductLine Updation
-
ProductLine User Addition
-
Product Creation
-
Product Updation
-
Product User Mapping
-
Product Tasks Creation
-
User Project Data
What's next? Feature Management Adapter |