...
Path and query parameters are passed as query parameters when calling web services via the Connect application. The query parameters must always be passed in the Camel Case format. For example, if the path parameter "object_id" exists for an SAP endpoint, this must be passed as the query parameter “objectId” via the Connect application.
Table of Contents | ||||
---|---|---|---|---|
|
Endpoint “Data”
Using the Data endpoint, Change objects can be read, updated, created, and status transitions can be performed.
...
Name | Type | Description |
changedAt | Value | Date of last change |
changedBy | Value | Last changer |
configurationItem | Object | Configuration element and description |
createdAt | Value | Creation date |
createdBy | Value | Creator |
customFields | Object | All values of the defined custom fields |
cycleInfo | Object | Data on the assigned change cycle |
description | Value | Title |
dueDate | Value | Due date |
dueTimestamp | Value | Due date as UTC timestamp |
endDate | Value | Date of the desired end |
endTimestamp | Value | The desired end as UTC timestamp |
externalCustomFields | Object | Values of defined external custom fields |
externalId | Value | Contains the value of the External ID in case of a 1:1 assignment |
externalIds | Array | Contains all assigned External IDs |
externalIdsCount | Value | Number of assigned External IDs |
impact | Value | Impact of the change object |
impactText | Value | Display text for impact. |
longtext | Value | Contains the description of the object. Since Change Request Management objects can contain multiple texts, this field contains the text that was stored as default in the addon's Customizing for the associated document type |
objectGuid | Value | Unique ID for the object |
objectId | Value | Object ID of the object |
parentDescription | Value | Short description of the parent object, if a link exists |
parentObjectGuid | Value | Unique ID for the parent object, if it exists |
parentObjectId | Value | Object ID of the parent object, if it exists |
parentProcessType | Value | Document type of the parent object, if it exists |
parentProcessTypeDescr | Value | Description of the document type of the parent object, if it exists |
parentProcessTypeSdescr | Value | Short description of the document type of the parent object, if it exists |
parentStatusText | Value | Description of the current status of the parent object, if it exists |
parentUserStatus | Value | Current status of the parent object, if it exists |
partner | Array | List with information of the assigned information including the number of the business partner, the function of the partner, the name of the business partner and its e-mail address |
postingDate | Value | Creation date |
priority | Value | Priority of the object |
priorityText | Value | Display text of the selected priority |
processType | Value | Documen type |
processTypeDescr | Value | Description of the document type |
processTypeDescrShort | Value | Short description of the document type |
requests | Array | List of all assigned transport requests with detailed information |
requestsAsString | Value | The transport request numbers as a single string separated by line breaks |
standardFields | Array | A list of standard fields filled with custom values. The configuration of the addon can be used to control which standard fields can be used |
startDate | Value | Date of the desired start |
startTimestamp | Value | Date of the desired start as UTC timestamp |
texts | Array | List of all object texts |
urgency | Value | Urgency |
urgencyText | Value | Display text of the selected urgency |
userStatus | Value | Current status |
userStatusProc | Value | Status scheme used |
userStatusText | Value | Display text of the current status |
userStatusFinal | Value | Flag ("X" = True, "" = False) indicating whether the current status can no longer be changed |
userStatusProc | Value | Status scheme used |
userStatusText | Value | Display text of the current status |
Sample response for a request for change:
Code Block | ||
---|---|---|
| ||
{ "changedAt": "20212022-0203-1825", "changedBy": "GALILEOXXX", "configurationItem": { "productId": "71000001117100000011", "textIbComp": "G00S02 0020168246 300001" }, "createdAt": "20212022-0103-2925", "createdBy": "GALILEOXXX", "customFields": [ { "name": "CLIENT", "value": "100" }, { { "name": "CUSTOMER_EXT", "value": "" }, { { "name": "CUSTOMER_H_DUMMY", "value": "" }, { "name": "CUSTOMER_INT", "value": "" }, { { "name": "GUIDCUSTOMER_INT", "value": "00155DF935011EDB98C13B600E6760E0" }, { { "name": "MODEZZEXTERNAL_REF", "value": "" }, { "name": "REFZZEXTERNAL_GUIDURI", "value": "00155DF935011EDB98C13B600E6760E0" }, { "name": "ZZEXTERNAL_ID", "value": "" }, { "name": "ZZEXTERNAL_REF", "value": "" }, { "name": "ZZGXP_RISK", "value": "" }, { "name": "ZZJIRA_ID", "value": "BIIMPL01-999" }, { "name": "ZZJIRA_URL", "value": "" } ], "cycleInfo": { "projectTitle": "Phase Cylce (IF_CONIGMA)", "releaseType": "I", "releaseTypeDescription": "Phase Cycle", "releaseCrmId": "8000000211", "tasklistId": "", "smiProject": "0000000021", "slanDesc": "G00 - Solution Manager", "sbraName": "Wartung", "goLiveDate": "2017-10-02", "goLiveTime } ], "cycleInfo": { "projectTitle": "Maintenance S02", "releaseType": "O", "releaseTypeDescription": "Continual Cycle", "releaseCrmId": "8000000095", "tasklistId": "M000000001", "smiProject": "0000000001", "slanDesc": "SolutionManagerS02", "sbraName": "Maintenance", "goLiveDate": null, "goLiveTime": "00:00:00", "devStartDate": null, "devStartTime": "00:00:00", "devCloseDate": null, "devCloseTime": "00:00:00" }, "devStartDatedescription": "2017-08-22Test NC", "devStartTime": "00:00:00", "devCloseDatedueDate": "20172022-04-08-31", "devCloseTimedueTimestamp": "00:00:00" }, "description2022-04-08T08:53:48Z", "endDate": "Description2022-03-28", "dueDate": "2021-02-12", "dueTimestampendTimestamp": "20212022-0203-12T0828T08:1353:33Z47Z", "endDateexternalCustomFields": "2021-09-21"[], "endTimestamp": "2021-09-20T22:00:00Z", "externalId": "BIIMPL01-12", "externalIds": ["BIIMPL01-12"], "externalIdsCount": 10, "impact": "0075", "impactText": "Low", "longtext": "ThisDescription is the long text.", of Change\r\n25.03.2022 10:52:47 XXX\r\n\r\nTest RFC", "objectGuid": "00155DF935011EDB98C13B600E6760E0005056A496961EDCAB842EE5506292F5", "objectId": "80000017608000000144", "parentDescription": "Test RFC", "parentObjectGuid": "00000000000000000000000000000000005056A496961EDCAB828F60EA71F155", "parentObjectId": "8000000143", "parentProcessType": "ZMCR", "partner": [ { "partnerGuidparentProcessTypeDescr": "00155DF935011EDB98C13B600E7220E0Custom Request for Change", "partnerNumber "parentProcessTypeSdescr": "151Custom RFC", "partnerFct": "00000001", "partnerFctTxtparentStatusText": "Sold-ToBeing PartyImplemented", "partnerMainparentUserStatus": "XE0015", "partnerNamepartner": [ "Mr. XXX", "partnerEmail": "XXX@XXX.de", "partnerLookup": "", "deletionFlag": "" }, { { "partnerGuid": "00155DF935011EDB98C141D658A540E0005056A496961EDCAB843027865D52F7", "partnerNumber": "151118", "partnerFct": "SDCD0004", "partnerFctTxt": "Current Processor", "partnerMain": "X", "partnerName": "Mr. XXXX", "partnerEmail": "XXX@XXXxxx@xxx.de", "partnerLookup": "", "deletionFlag": "" }, { "partnerGuid": "00155DF935011EDB98C13B600E7140E0005056A496961EDCAB842EE55062F2F5", "partnerNumber": "102118", "partnerFct": "SDCR0001", "partnerFctTxt": "Requester", "partnerMain": "X", "partnerName": "Mr. YYYx", "partnerEmail": "xxx@xxx.de", "partnerLookup": "", "deletionFlag": "" }, { "partnerGuid": "00155DF935011EDB98C13B600E7260E0005056A496961EDCAB842EE5506312F5", "partnerNumber": "151124", "partnerFct": "SDCR0002", "partnerFctTxt": "Change Manager", "partnerMain": "X", "partnerName": "Mr. XXXy", "partnerEmail": "XXX@XXXyyy@yyy.de", "partnerLookup": "", "deletionFlag": "" } ], "postingDate, { "partnerGuid": "2021-01-29005056A496961EDCAB84313384CA52F7", "priority": "3", "priorityText": "3: Medium", "processTypepartnerNumber": "ZMCR118", "requests": [], "requestsAsString "partnerFct": "SMCD0001", "standardFields": [ { "partnerFctTxt": "Developer", "namepartnerMain": "/AICRM/EXT_TOKENX", "valuepartnerName": "TestValue" Mr. x", } ], "startDatepartnerEmail": "2021-01-29xxx@xxx.de", "startTimestamppartnerLookup": "2021-01-29T08:13:32Z", "texts": [ { "textId": "CR01", "textdeletionFlag": ""This is the long text." }, { "textIdpartnerGuid": "ZZ01005056A496961EDCAB84313384CA72F7", "textpartnerNumber": "124"This, is a technical problem description." }, { "textIdpartnerFct": "ZZ02SMCD0002", "textpartnerFctTxt": "Tester"This is, an impact analysis." } ], "urgencypartnerMain": "00X", "urgencyText": "", "userStatus "partnerName": "E0015Mr. y", "userStatusFinal "partnerEmail": "yyy@yyy.de", "userStatusProcpartnerLookup": "ZMCRHEAD", "userStatusTextdeletionFlag": "Being Implemented" } |
Sample response for the "requests" node:
Code Block | ||
---|---|---|
| ||
"requests": [ { "tasklist": "I000000011", "trorderNumber": "G00K900630", "text": "", "ctsId": "G00_P00005", "transportTrack": "TR000005", "sysName": "G00", "sysType": "ABAP", "sysClient": "100", "respUser": "DUMMY", "createdDate": "2021-01-28", "createdTime": "09:04:34", "releasedDate": null, "releasedTime": "00:00:00", "status": "@07@", "trfunction": "K", "originator": "S", "originatorId": "00155DF935011EDB98A7322BD3F5C0E0", "originatorKey": "8000001744", " } ], "postingDate": "2022-03-25", "priority": "4", "priorityText": "4: Low", "processType": "ZMMJ", "processTypeDescr": "Custom Normal Change", "processTypeDescrShort": "Custom Normal Change", "requests": [ { "tasklist": "M000000001", "trorderNumber": "S01K900158", "sysName": "S01", "sysType": "ABAP", "sysClient": "001", "ctsId": "S01_P00001", "transportTrack": "TR000000", "respUser": "XXX", "trfunction": "W", "status": "@07@", "trorderCopy": "", "projectNametarget": "S01.002", "criticalObject": false, "abortExport "smiProject": false"0000000001", "csolConflict": false, "csolActivated": false, "tocNumberoriginator": "S", "trfunctionText": "", "codeInspectChk": false, "tranpTargetChangeoriginatorId": false"005056A496961EDCAB842EE5506292F5", "openTask": false, "emptyRequest": false, "taskNumberoriginatorKey": "8000000144", "statusText": "", "retrofitStatus "createdDate": "2022-03-25", "collectionId "createdTime": "10:54:34", }, { "tasklistreleasedDate": "I000000011"null, "trorderNumberreleasedTime": "G00K90063200:00:00", "textdescription": "S 8000000144: Test NC", "ctsIdtrstatus": "G00_P00005", "transportTracktypeDescription": "TR000005Customizing Request", "sysNamestatusDescription": "G00Modifiable", "sysType": "ABAP", "sysClient } ], "requestsAsString": "100S01K900158", "respUserstandardFields": "DUMMY", [], "createdDatestartDate": "20212022-0103-2825", "createdTimestartTimestamp": "09:04:36", "releasedDate": null, "releasedTime": "00:00:00", "status": "@07@", "trfunction": "W", "originator": "S", "originatorId": "00155DF935011EDB98A7322BD3F5C0E0", "originatorKey": "8000001744", "trorderCopy": "", "projectName": "", "criticalObject": false, "abortExport": false, "csolConflict": false, "csolActivated": false, "tocNumber": "", "trfunctionText": "", "codeInspectChk": false, "tranpTargetChange": false, "openTask": false, "emptyRequest": false, "taskNumber": "", "statusText": "", "retrofitStatus": "", "collectionId": "" } ] |
GET /data/external_ids/{external_id}
The GET /data/external_ids/{external_id} endpoint returns the same information as the GET /data/objects/{object_id} endpoint except that the object is determined based on the linked External ID.
GET /data/objects/{object_id}/children
This endpoint provides all associated linked objects based on an object ID, e.g., if the object ID corresponds to a change request ID, the endpoint provides information about the linked change documents.
The endpoint provides the following information in tabular form.
...
Name
...
Type
...
Description
...
parentGuid
...
Value
...
Unique ID of the object whose linked documents were requested using the object ID.
...
parentObjectId
...
Value
...
Object ID corresponding to the object ID from the endpoint.
...
parentProcessType
...
Value
...
Document type of the object whose linked documents were requested using the object ID.
...
totalChildren
...
Value
...
Number of linked objects.
...
children
...
Array
...
List of objects with details about the linked objects, see the table below.
Tabular view of the information inside the "children" array.
...
Name
...
Type
...
Description
...
guid
...
Value
...
Unique ID of the linked object
...
objectId
...
Value
...
Object ID of the linked object
...
processType
...
Value
...
Document type of the linked object
...
description
...
Value
...
Short description of the linked object
...
userStatus
...
Value
...
Current status
...
userStatusText
...
Value
...
Display text of the current status
...
userStatusFinal
...
Value
...
Flag ("X" = True, "" = False) indicating whether the current status can no longer be changed
Sample Response:
Code Block | ||
---|---|---|
| ||
{ "parentGuid": "00155DF935011EDB98C13B600E6760E0", "parentObjectId": "8000001760", "parentProcessType": "ZMCR", "totalChildren": 2, "children": [ { "guid": "00155DF935011EDB98C164809CF420E0", "objectId": "8000001761", "processType": "ZMMJ", "description": "Demo Change 1", "userStatus": "E0002", 2022-03-25T09:53:47Z", "texts": [ { "textId": "CD99", "text": "General Note\r\n25.03.2022 10:54:35 HOOGEN\r\n\r\n\r\nAction Create Transport Request in system S01~ABAP 001 of type Source\r\nSystems completed\r\n\r\nRequests S01K900158 created\r\n____________________\r\nGeneral Note\r\n25.03.2022 10:54:18 HOOGEN\r\n\r\n\r\nThe status was set to the value 'In Development'\r\n____________________\r\nGeneral Note\r\n25.03.2022 10:53:48 HOOGEN\r\n\r\n\r\nThe status was set to the value 'Created'" }, { "textId": "CR01", "text": "Description of Change\r\n25.03.2022 10:52:47 XXX\r\n\r\nTest RFC" } ], "urgency": "75", "urgencyText": "Medium", "userStatus": "E0002", "userStatusFinal": "", "userStatusProc": "ZMMJHEAD", "userStatusText": "In Development", } |
Sample response for the "requests" node:
Code Block | ||
---|---|---|
| ||
"userStatusFinalrequests": ""[ },{ {"tasklist": "M000000001", "guidtrorderNumber": "00155DF935011EDB98C165411CA980E0S01K900158", "objectIdsysName": "8000001762S01", "processTypesysType": "ZMMJABAP", "descriptionsysClient": "Demo Change 2001", "userStatusctsId": "E0001S01_P00001", "userStatusTexttransportTrack": "Created", TR000000", "respUser": "XXX", "trfunction": "W", "userStatusFinalstatus": "@07@", "trorderCopy": "", } ] } |
GET /data/external_ids/{external_id}/children
This endpoint returns identical information as the GET /data/objects/{object_id}/children endpoint with the difference that the parent object is determined using the External ID.
GET /data/objects/{object_id}/action
This endpoint provides information of the available PPF actions of the action profile belonging to the object based on a specified object ID. In addition, the endpoint provides an indicator for each PPF action as to whether the action can be executed for the current status.
You can find the PPF actions in Customizing using transaction SPRO via the path “SAP Solution Manager -> Capabilities (Optional) -> Change Control Management -> Transactions -> Actions -> Change Actions and Conditions -> Define Action Profiles and Actions”. The action profile for ChaRM operations is usually as follows <Transaction Type>_ACTIONS, z. B. ZMCR_ACTIONS. Via the customizing path “SAP Solution Manager -> Capabilities (Optional) -> Change Control Management -> Transactions -> Actions -> Assign Action Profile to the Business Transaction Type” can additionally determine exactly what the action profile is for a particular transaction type.
The endpoint returns some information about the requested object ID and an array of PPF actions, which look like the following.
...
Name
...
Type
...
Description
...
actions
...
Array
...
This property returns a list with information about the PPF actions of the object
...
description
...
Value
...
Description of the object
...
externalID
...
Value
...
The assigned External ID of the object, if any
...
objectGuid
...
Value
...
Globally unique ID of the object
...
objectId
...
Value
...
The object ID of the object
...
processType
...
Value
...
The transaction type of the object
The elements of the "actions" array contain the following information about PPF actions.
...
Name
...
Type
...
Description
...
guid
...
Value
...
Globally unique ID of the PPF actions
...
ttype
...
Value
...
PPF Action Name
...
ttypedescr
...
Value
...
The value contains the short description of the PPF action
...
context
...
Value
...
The associated action profile of the PPF action
...
executable
...
Value
...
Flag indicating whether the PPF action can be executed for the current object status. The value "X" corresponds to "True" and the value "" corresponds to "False".
Sample Response:
Code Block | ||
---|---|---|
| ||
{ "actions": [ { "guid": "00155DF935011EDB98C13B600E72E0E0", "ttype": "ZMCR_ON_CREATE", "ttypedescr": "When First Saving", "context": "ZMCR_ACTIONS", "executable": "" }, ... { "guid": "00155DF935011EDBB1A1C59AA79780E1", "ttype": "ZMCR_EXTEND_SCOPE", "ttypedescr": "Extend Scope", "context": "ZMCR_ACTIONS", "executable": "X" }, { "guid": "00155DF935011EDBB1A1C59AA79800E1", "target": "S01.002", "smiProject": "0000000001", "originator": "S", "originatorId": "005056A496961EDCAB842EE5506292F5", "originatorKey": "8000000144", "createdDate": "2022-03-25", "createdTime": "10:54:34", "releasedDate": null, "releasedTime": "00:00:00", "description": "S 8000000144: Test NC", "trstatus": "", "typeDescription": "Customizing Request", "statusDescription": "Modifiable" } ] |
GET /data/external_ids/{external_id}
The GET /data/external_ids/{external_id} endpoint returns the same information as the GET /data/objects/{object_id} endpoint except that the object is determined based on the linked External ID.
GET /data/objects/{object_id}/children
This endpoint provides all associated linked objects based on an object ID, e.g., if the object ID corresponds to a change request ID, the endpoint provides information about the linked change documents.
The endpoint provides the following information in tabular form.
Name | Type | Description |
parentGuid | Value | Global unique ID of the object whose children were requested |
parentObjectId | Value | Object ID |
parentProcessType | Value | Document type |
totalChildren | Value | Number of child objects |
children | Array | List of child objects, see next section |
Tabular view of the information inside the "children" array.
Name | Type | Description |
guid | Value | Global unique ID |
objectId | Value | Object ID |
processType | Value | Document type |
description | Value | Short description |
userStatus | Value | Current status |
userStatusText | Value | Text of the current status |
userStatusFinal | Value | Flag ("X" = True, "" = False) indicating whether the current status can no longer be changed |
Sample Response:
Code Block | ||
---|---|---|
| ||
{ "parentGuid": "005056A496961EDCAB828F60EA71F155", "parentObjectId": "8000000143", "parentProcessType": "ZMCR", "totalChildren": 1, "children": [ { "ttypeguid": "ZMCR_CREATE_PPM_TASK005056A496961EDCAB842EE5506292F5", "ttypedescrobjectId": "Create Project Management Task8000000144", "contextprocessType": "ZMCR_ACTIONSZMMJ", "executabledescription": "XTest NC", } ], "descriptionuserStatus": "TestE0002", request for change", "externalIduserStatusText": "BIIMPL01-12In Development", "objectGuiduserStatusFinal": "00155DF935011EDB98C13B600E6760E0", "objectId": "8000001760",} "processType": "ZMCR"] } |
GET /data/external_ids/{external_id}/
...
children
This endpoint returns the same information based on an External ID about PPF actions of a given object identical information as the GET /data/objects/{object_id}/action endpointchildren endpoint with the difference that the parent object is determined using the External ID.
GET /data/objects/
...
{object_id}/action
This endpoint is used to search for objects in Solution Manager using predefined filter criteria.
The filter criteria are passed completely as query parameters for this endpoint. The following query parameters can be specified.
...
Name
...
Possible values
...
Description
...
description
...
Any case-insensitive text. “*" and "%" can be used as replacement characters for pattern-based searches.
...
Object description
...
only_active_status
...
"true" or "false"
...
Flag indicating whether only objects with a non-final status are to be returned.
...
object_id
...
10-digit object number. A pattern-based search is possible by specifying "*" or "%".
...
Object ID
...
configuration_item
...
The configuration item as a string. A pattern-based search for the configuration item is not possible.
...
Configuration item
...
product_id
...
The configuration item as a string. A pattern-based search for the configuration item is not possible.
...
Configuration item (alternative name)
...
posting_date
...
Date in the form YYYY-MM-DD
...
Posting or creation date
...
object_type
...
The following fixed values are allowed:
RFC = Change request
CR = Change document
CCY = Change cycle
DEF = Defect
...
Object type
The response of the endpoint corresponds to the table below.
...
Name
...
Type
...
Description
...
totalObjects
...
Value
...
Number of objects determined
...
objects
...
Array
...
Array with detailed information about the objects found
The objects from the array "objects" contain the following values.
...
Name
...
Type
...
Description
...
guid
...
Value
...
The value contains the globally unique ID of the object
...
objectId
...
Value
...
The object ID of the object
...
processType
...
Value
...
The associated transaction type of the object
...
postingDate
...
Value
...
Date of creation of the object was
...
description
...
Value
...
Object Description.
...
userStatus
...
Value
...
Current status
...
userStatusText
...
Value
...
Display text of the current status
...
userStatusFinal
...
Value
...
Flag ("X" = True, "" = False) indicating whether the current status can no longer be changed
...
configItem
...
Value
...
Configuration item. This value is not filled during change cycles.
...
configItemText
...
Value
...
Description of the configuration item. This value is not filled during change cycles.
...
cycleId
...
Value
...
The object ID of the associated change cycle. This value is identical to objectId if the object corresponds to a change cycle.
...
cycleText
...
Value
...
The description of the associated change cycle. This value is identical to description if the object corresponds to a change cycle.
...
totalCycleConfigItems
...
Value
...
Number of configuration items if the object corresponds to a change cycle
...
cycleConfigItems
...
Array
...
List with associated configuration items if the object corresponds to a change cycle
The items from the cycleConfigItems field correspond to the following format:
...
Name
...
Type
...
Description
...
configItem
...
Value
...
Configuration item
...
configItemText
...
Value
...
Description of the configuration item
Sample Response:
Code Block | ||
---|---|---|
| ||
{
"totalObjects": 1,
"objects": [
{
"guid": "00155DF935011ED7A690FB3043D0E0C4",
"objectId": "8000000260",
"processType": "ZMCR",
"postingDate": "2017-09-13",
"description": "Demo Change Request",
"userStatus": "E0011",
"userStatusText": "Extend Scope",
"userStatusFinal": "",
"configItem": "7100000111",
"configItemText": "G00 0020168246 300",
"cycleId": "8000000211",
"cycleText": "Phase cycle (IF_CONIGMA)",
"totalCycleConfigItems": 0,
"cycleConfigItems": []
}
]
} |
POST /data
This endpoint can be used to create new objects in Solution Manager. The endpoint additionally accepts the query parameter "simulation" to simulate the creation of an object. To simulate the creation of an object, the parameter must be assigned either the value "True" or "X", e.g. "http(s)//: ... /data?simulation=True"
The request must contain at least one value for the transaction type via the "processType" property in order to create an object.
The following object values are currently supported if they are included in the request.
Configuration item
The configuration item or IBase component is a JSON object named "configurationItem" with properties "productId" for the configuration item and "textIbComp" for the description of the configuration item, where only the value for "productId" is relevant for creation or modification.
Code Block | ||
---|---|---|
| ||
"configurationItem": {
"productId": "7100000111"
} |
Custom fields
All custom fields that exist in the CRMD_CUSTOMER_H table and begin with either ZZ or YY can be passed when creating an object.
For example, if the custom field YYJIRA_URL is to contain the URL of a linked Jira Issue, the following can be passed in the request. The field name must be passed in lowercase in the "customFields" object. If the name contains an underscore, the next letter after the underscore must be specified in upper case.
Code Block | ||
---|---|---|
| ||
"customFields": {
"yyjiraUrl": "https://my-jira-instance.com/projects/IMPL/issues/IMPL-4712"
} |
Change cycle
When assigning a change cycle, either its ID or the description of the cycle can be passed via the JSON object "cycleInfo". The property "releaseCrmId" corresponds to the ID of the cycle and "projectTitle" corresponds to the description of the cycle.
If you want to assign a cycle with ID 8000000211 with description "Release 2022-3" to an object, you can supply either the ID or the description, provided that the description is unique.
Code Block | ||
---|---|---|
| ||
"cycleInfo": {
"projectTitle": "Release 2022-3"
},
"cycleInfo": {
"releaseCrmId": "8000000211"
} |
Short description/title of the object
The short description or title of the object can be passed via the "description" property.
Code Block | ||
---|---|---|
| ||
"description": "New financial document type \"KR\"" |
Desired start, Desired end, Due date
The date fields Desired start, Desired end or Due date can be passed via the properties "startDate", "endDate" and "dueDate". The date format corresponds to the pattern YYYY-MM-DD.
Code Block | ||
---|---|---|
| ||
"dueDate": "2021-02-15",
"endDate": "2022-03-18",
"startDate": "2022-01-15" |
External ID
An External ID, such as a Jira Issue ID or a ServiceNow Incident ID, can be set using the "externalId" property.
Code Block | ||
---|---|---|
| ||
"externalId": "IMPL-4712" |
Multiple External IDs
If the assignment of multiple external IDs is allowed for certain transaction types, a set of external IDs can be passed directly via the array property "externalIds".
Code Block | ||
---|---|---|
| ||
"externalIds": [
"IMPL-4712",
"IMPL-4713"
] |
Impact of a requirement, change or problem
The impact of a requirement, change or problem can be assigned via the "impact" property. Permissible values for the impact, can be found in table CRMC_SRQM_IMPACT.
Code Block | ||
---|---|---|
| ||
"impact": "75" |
Long text
The long text of an object can be assigned with the "longtext" property. Since the associated text type depends on the transaction type and customer-specific text types may be used, a text type must be assigned in advance in the configuration of the add-on for each transaction type that is to be used as long text.
Code Block | ||
---|---|---|
| ||
"longtext": "This is a detailed description for the requirement.\n Following changes has to be implemented:\n" |
Business Partner
Business partners relevant in the process can be assigned via the "partner" property. The property is an array with objects, whereby at least the partner function "partnerFct" and a search text "partnerLookup" must be specified for an object. The search text works in the same way as entering a partner in the web frontend of the Solution Manager and, for example, the number or the last name of the partner can be specified. It is also possible to implement customer-specific mapping rules for business partners.
Please note that the partner function depends on the transaction type. The available partner functions for a transaction type can be found in table AIC_PARTNER_FCT. In the following example, the role "Requester" is assigned to business partner 151 and the role "Change Manager" is assigned to business partner 102.
...
language | json |
---|
...
provides information of the available PPF actions of the action profile belonging to the object based on a specified object ID. In addition, the endpoint provides an indicator for each PPF action as to whether the action can be executed for the current status.
You can find the PPF actions in Customizing using transaction SPRO via the path “SAP Solution Manager -> Capabilities (Optional) -> Change Control Management -> Transactions -> Actions -> Change Actions and Conditions -> Define Action Profiles and Actions”. The action profile for ChaRM operations is usually as follows <Transaction Type>_ACTIONS, z. B. ZMCR_ACTIONS. Via the customizing path “SAP Solution Manager -> Capabilities (Optional) -> Change Control Management -> Transactions -> Actions -> Assign Action Profile to the Business Transaction Type” can additionally determine exactly what the action profile is for a particular transaction type.
The endpoint returns some information about the requested object ID and an array of PPF actions, which look like the following.
Name | Type | Description |
actions | Array | List of available object actions |
description | Value | Short description |
externalID | Value | External ID |
objectGuid | Value | Global unique ID |
objectId | Value | Oject ID |
processType | Value | Document type |
The elements of the "actions" array contain the following information about PPF actions.
Name | Type | Description |
guid | Value | Global unique ID of the PPF action |
ttype | Value | Name |
ttypedescr | Value | Short description |
context | Value | Action profile |
executable | Value | Flag indicating whether the PPF action can be executed for the current object status. The value "X" corresponds to "True" and the value "" corresponds to "False". |
Sample Response:
Code Block | ||
---|---|---|
| ||
{
"actions": [
{
"guid": "005056A496961EDCAB846CF67A1F132F",
"ttype": "ZMMJ_CHECK_STATUS_MJ",
"ttypedescr": "Checks Consistency",
"context": "ZMMJ_ACTIONS",
"executable": ""
},
...
{
"guid": "005056A496961EDCAB846CF67A1F532F",
"ttype": "ZMMJ_TO_BE_TESTED_MJ",
"ttypedescr": "Pass Normal Change to Test",
"context": "ZMMJ_ACTIONS",
"executable": "X"
},
...
{
"guid": "005056A496961EDCAB846CF67A1F932F",
"ttype": "ZMMJ_WITHDRAW_MJ",
"ttypedescr": "Withdraw Normal Change",
"context": "ZMMJ_ACTIONS",
"executable": "X"
},
{
"guid": "00000000000000000000000000000000",
"ttype": "ZMMJ_TESTED_AND_NOT_OK_MJ",
"ttypedescr": "Reset Status to \"In Developmen",
"context": "ZMMJ_ACTIONS",
"executable": ""
},
...
{
"guid": "00000000000000000000000000000000",
"ttype": "ZMMJ_REQUEST_PRELIMINARY_MJ",
"ttypedescr": "Request Preliminary Import",
"context": "ZMMJ_ACTIONS",
"executable": ""
},
{
"guid": "005056A496961EDCAB846CF67A1FD32F",
"ttype": "ZMMJ_TRANSPORT_TO_SANDBOX_W_MJ",
"ttypedescr": "Transport into Sandbox System",
"context": "ZMMJ_ACTIONS",
"executable": "X"
}
],
"description": "Test NC",
"externalId": "",
"objectGuid": "005056A496961EDCAB842EE5506292F5",
"objectId": "8000000144",
"processType": "ZMMJ"
} |
GET /data/external_ids/{external_id}/action
This endpoint returns the same information based on an External ID about PPF actions of a given object as the GET /data/objects/{object_id}/action endpoint.
GET /data/objects/search
This endpoint is used to search for objects in Solution Manager using predefined filter criteria.
The filter criteria are passed completely as query parameters for this endpoint. The following query parameters can be specified.
Name | Possible values | Description |
description | Any case-insensitive text. “*" and "%" can be used as replacement characters for pattern-based searches. | Object description |
only_active_status | "true" or "false" | Flag indicating whether only objects with a non-final status are to be returned. |
object_id | 10-digit object number. A pattern-based search is possible by specifying "*" or "%". | Object ID |
configuration_item | The configuration item as a string. A pattern-based search for the configuration item is not possible. | Configuration item |
product_id | The configuration item as a string. A pattern-based search for the configuration item is not possible. | Configuration item (alternative name) |
posting_date | Date in the form YYYY-MM-DD | Creation date |
object_type | The following fixed values are allowed: | Object type |
The response of the endpoint corresponds to the table below.
Name | Type | Description |
totalObjects | Value | Number of objects found |
objects | Array | Object list of the found objects |
The objects from the array "objects" contain the following values.
Name | Type | Description |
guid | Value | Global unique ID |
objectId | Value | Object ID |
processType | Value | Document type |
postingDate | Value | Creation date |
description | Value | Short description |
userStatus | Value | Current status |
userStatusText | Value | Display text of the current status |
userStatusFinal | Value | Flag ("X" = True, "" = False) indicating whether the current status can no longer be changed |
configItem | Value | Configuration item if the object is not a change cycle |
configItemText | Value | Configuration item description, if object is not a change cycle |
cycleId | Value | Object ID of the associated change cycle |
cycleText | Value | Description of the associated change cycle |
totalCycleConfigItems | Value | Number of assigned configuration items, if object is a change cycle |
cycleConfigItems | Array | List of assigned configuration items, if objects is a change cycle |
The items from the cycleConfigItems field correspond to the following format:
Name | Type | Description |
configItem | Value | Configuration item |
configItemText | Value | Description of the configuration item |
Sample Response:
Code Block | ||
---|---|---|
| ||
{
"totalObjects": 1,
"objects": [
{
"guid": "005056A496961EDCA88C33753EA41906",
"objectId": "8000000095",
"processType": "SMAI",
"postingDate": "2022-03-10",
"description": "Maintenance S02",
"userStatus": "E0002",
"userStatusText": "Active",
"userStatusFinal": "",
"configItem": "",
"configItemText": "",
"cycleId": "8000000095",
"cycleText": "Maintenance S02",
"totalCycleConfigItems": 1,
"cycleConfigItems": [
{
"configItem": "7100000011",
"configItemText": "S02 0020168246 001"
}
]
}
]
} |
POST /data
This endpoint can be used to create new objects in Solution Manager. The endpoint additionally accepts the query parameter "simulation" to simulate the creation of an object. To simulate the creation of an object, the parameter must be assigned either the value "True" or "X", e.g. "http(s)//: ... /data?simulation=True"
The request must contain at least one value for the transaction type via the "processType" property in order to create an object.
The following object values are currently supported if they are included in the request.
Configuration item
The configuration item or IBase component is a JSON object named "configurationItem" with properties "productId" for the configuration item and "textIbComp" for the description of the configuration item, where only the value for "productId" is relevant for creation or modification.
Code Block | ||
---|---|---|
| ||
"configurationItem": {
"productId": "7100000111"
} |
Custom fields
All custom fields that exist in the CRMD_CUSTOMER_H table and begin with either ZZ or YY can be passed when creating an object.
For example, if the custom field ZZEXTERNAL_URI should contain the URL of a linked Jira issue, the following can be passed in the request. Basically, the customFields field is an array but it can also be addressed as an object if only one custom field needs to be updated. If the one custom field is passed like an object, the technical field name must be specified in camel case, i.e. all lowercase except for characters after an underscore; these must be specified in uppercase, see example below.
Code Block | ||
---|---|---|
| ||
"customFields": {
"zzexternalUri": "https://my-jira-instance.com/projects/IMPL/issues/IMPL-4712"
} |
If more custom fields need to be filled, the request should look like this.
Code Block | ||
---|---|---|
| ||
"customFields": [
{
"name": "ZZEXTERNAL_REF",
"value": "IMPL-4712"
},
{
"name": "ZZEXTERNAL_URI",
"value": "https://my-jira-instance.com/projects/IMPL/issues/IMPL-4712"
}
] |
Change cycle
When assigning a change cycle, either its ID or the description of the cycle can be passed via the JSON object "cycleInfo". The property "releaseCrmId" corresponds to the ID of the cycle and "projectTitle" corresponds to the description of the cycle.
If you want to assign a cycle with ID 8000000211 with description "Release 2022-3" to an object, you can supply either the ID or the description, provided that the description is unique.
Code Block | ||
---|---|---|
| ||
"cycleInfo": {
"projectTitle": "Release 2022-3"
},
"cycleInfo": {
"releaseCrmId": "8000000211"
} |
Short description/title of the object
The short description or title of the object can be passed via the "description" property.
Code Block | ||
---|---|---|
| ||
"description": "New financial document type \"KR\"" |
Desired start, Desired end, Due date
The date fields Desired start, Desired end or Due date can be passed via the properties "startDate", "endDate" and "dueDate". The date format corresponds to the pattern YYYY-MM-DD.
Code Block | ||
---|---|---|
| ||
"dueDate": "2021-02-15",
"endDate": "2022-03-18",
"startDate": "2022-01-15" |
External ID
An External ID, such as a Jira Issue ID or a ServiceNow Incident ID, can be set using the "externalId" property.
Code Block | ||
---|---|---|
| ||
"externalId": "IMPL-4712" |
Multiple External IDs
If the assignment of multiple external IDs is allowed for certain transaction types, a set of external IDs can be passed directly via the array property "externalIds".
Code Block | ||
---|---|---|
| ||
"externalIds": [
"IMPL-4712",
"IMPL-4713"
] |
Impact of a requirement, change or problem
The impact of a requirement, change or problem can be assigned via the "impact" property. Permissible values for the impact, can be found in table CRMC_SRQM_IMPACT.
Code Block | ||
---|---|---|
| ||
"impact": "75" |
Priority
The priority of the document can be assigned via the "priority" property. Permissible priority values can be looked up in table SCPRIO.
Code Block | ||
---|---|---|
| ||
"priority": "3" |
Urgency
The urgency of a document will be assigned via the "urgency" property. The CRMC_SRQM_URGENC table contains the allowed values of this field.
Code Block | ||
---|---|---|
| ||
"urgency": "75" |
Long text
The long text of an object can be assigned with the "longtext" property. Since the associated text type depends on the transaction type and customer-specific text types may be used, a text type must be assigned in advance in the configuration of the add-on for each transaction type that is to be used as long text, see https://galileogroup.atlassian.net/wiki/spaces/CONNECTDOCEN/pages/712343577/REST+API+Configuration+REST+API+for+Solution+Manager#Default-text-objects-for-a-transaction-type .
Code Block | ||
---|---|---|
| ||
"longtext": "This is a detailed description for the requirement.\n Following changes has to be implemented:\n" |
Additional text objects
The "texts" array can be used to transfer further texts in addition to the long text via the web service. You must look up the required text IDs in Customizing for the "CRM_ORDERH" object beforehand.
Code Block | ||
---|---|---|
| ||
"texts": [
{
"textId": "CD01",
"text": "Test report"
},
{
"textId": "CD02",
"text": "Test instructions: \n sample instruction"
}
] |
Business Partner
Business partners relevant in the process can be assigned via the "partner" property. The property is an array with objects, whereby at least the partner function "partnerFct" and a search text "partnerLookup" must be specified for an object. The search text works in the same way as entering a partner in the web frontend of the Solution Manager and, for example, the number or the last name of the partner can be specified. It is also possible to implement customer-specific mapping rules for business partners.
Please note that the partner function depends on the transaction type. The available partner functions for a transaction type can be found in table AIC_PARTNER_FCT. In the following example, the role "Requester" is assigned to business partner 151 and the role "Change Manager" is assigned to business partner 102.
Code Block | ||
---|---|---|
| ||
"partner": [
{
"partnerFct": "SDCR0001",
"partnerLookup": "151"
},
{
"partnerFct": "SDCR0002",
"partnerLookup": "102"
}
] |
PUT/data/objects/{object_id}
This endpoint is used to update an object based on its object ID. Which values can be updated can be found in the previous chapter POST /data.
PUT/data/external_ids/{external_id}
This endpoint corresponds to the previous one with the difference that the object is addressed via its External ID. This endpoint can only be used if External IDs is always uniquely associated with a Solution Manager object.
POST /data/objects/{object_id}/action/{action_id}/execute
This endpoint can be used to trigger a status transition of an object. The path parameter object_id is the object ID of the object for which the status transition is to be executed and the path parameter action_id must be a valid PPF action name. A list of available PPF actions for an object is provided by the GET /data/objects/{object_id}/action endpoint.
If the action can be executed without errors, the object for which the action was executed is returned. The scheme here corresponds to the endpoint GET /data/objects/{object_id}.
POST /data/external_ids/{external_id}/action/{action_id}/execute
This endpoint works analogously to the previous one with the difference that the object is identified by the External ID.
Endpoint “Cycles”
Using the Cycles endpoint, information about change cycles can be retrieved from Solution Manager.
...
Name | Type | Description |
totalObjects | Value | Number of change cycles determinedfound |
objects | ArrayArray | with detailed information about List with details of the change cycles found |
The objects from the array "objects" contain the following values.
Name | Type | Description |
guid | Value | The value contains the globally Global unique ID of the object |
objectId | Value | The object Object ID of the object |
processType | Value | The associated transaction type of the objectDocument type |
postingDate | ValueDate | of creation of the objectCreation date |
description | Value | Object description |
userStatus | Value | Current status |
userStatusText | Value | Display text of the current status |
userStatusFinal | Value | Flag ("X" = True, "" = False) indicating whether the current status can no longer be changed |
configItem | ValueConfiguration | item. This value is not filled during change cycles.Will not be filled at this endpoint! |
configItemText | ValueDescription | of the configuration item. This value is not filled during change cycles.Will not be filled at this endpoint! |
cycleId | Value | The Same as object ID of the associated change cycle. This value is identical to objectId if the object corresponds to a change cycle. |
cycleText | ValueThe | description of the associated change cycle. This value is identical to description if the object corresponds to a change cycle.Same as object description |
totalCycleConfigItems | Value | Number of assigned configuration items if the object corresponds to a change cycle |
cycleConfigItems | Array | List with associated of assigned configuration items if the object corresponds to a change cycle |
The items from the cycleConfigItems field correspond to the following format:
...
Sample Response:
Code Block | ||
---|---|---|
| ||
{ "partner": { "number": "00000001510000000118", "guid": "00155DF935011ED7A5DA18356AC4E0C4005056A496961EDCA7BCFEE4306C95EB", "firstname": "Frank", "lastname": "Dummy", "email": "frank.dummy@dummy.de", "validFrom": "0001-01-01", "validTo": "9999-12-31" } } |
Endpoint “Ping”
The "Ping" endpoint is used to test connections.
...