Hello Creatio Community,

I am working on a project where I need to either replace or override an existing Creatio web service with a custom implementation. Specifically, I want to extend or modify the functionality of a base Creatio web service (e.g., CallServiceSchemaService) to fit my business requirements.

Here’s what I want to achieve:

  • Create a custom web service in a separate package without affecting the existing functionality of the base service.
  • Either extend the existing service (if possible) or completely replace it with my custom implementation.
  • I want to customize the behavior of how service requests and responses are handled, while ensuring that all references to the original service use my new service.

Questions:

  1. What is the best approach to achieve this in Creatio? Should I extend or replace the service, and what are the steps to do so?
  2. How can I ensure that the system references my custom service in place of the base service without breaking existing functionality?
  3. Are there any best practices or limitations I should keep in mind when implementing custom web services in Creatio?

I would appreciate any guidance, examples, or documentation that can help me with this process.

Thank you!

Like 0

Like

0 comments
Show all comments

Hello community,
I want to create API Service from creatio that return object data with the detail (json with hierarchical data). lets say i want to get 'Account' with Orders, Lead, and else that connected with 'Account' in one endpoint.

I think about create Custom web services, anyone have script with similar case or have suggestion for this case?

Like 0

Like

2 comments
Best reply

You'll just need to design the objects you're returning and make it something like this: 

[DataContract]
public class OrderPayload
{
    [DataMember(Name = "id")]
    public Guid Id { get; set; }
    [DataMember(Name = "Number")]
    public string Number { get; set; }
}
 
[DataContract]
public class AccountPayload
{
    [DataMember(Name = "name")]
    public string Name { get; set; }
    [DataMember(Name = "orders")]
    public List<OrderPayload> Orders { get; set; }
}

Then you populate that as needed in the webserivce. The AccountPayload is the top level of the objects, so that is what the method would return. You'd populate like this (obviously from some data you read from an ESQ etc): 

var account = new AccountPayload();
account.Name = "Some account";
 
account.Orders = new List<OrderPayload>();
account.Orders.Add(someOrder1);
account.Orders.Add(someOrder2);
 
// now return account

 

Hope this helps get you started in the right direction.

Ryan

You'll just need to design the objects you're returning and make it something like this: 

[DataContract]
public class OrderPayload
{
    [DataMember(Name = "id")]
    public Guid Id { get; set; }
    [DataMember(Name = "Number")]
    public string Number { get; set; }
}
 
[DataContract]
public class AccountPayload
{
    [DataMember(Name = "name")]
    public string Name { get; set; }
    [DataMember(Name = "orders")]
    public List<OrderPayload> Orders { get; set; }
}

Then you populate that as needed in the webserivce. The AccountPayload is the top level of the objects, so that is what the method would return. You'd populate like this (obviously from some data you read from an ESQ etc): 

var account = new AccountPayload();
account.Name = "Some account";
 
account.Orders = new List<OrderPayload>();
account.Orders.Add(someOrder1);
account.Orders.Add(someOrder2);
 
// now return account

 

Hope this helps get you started in the right direction.

Ryan

Hello!

 

Additionally, you can read more about custom web services here.

Show all comments