> Markdown version of [External Servlets](https://vaadin.com/docs/latest/tools/collaboration/advanced/integrating-external-servlets). Section index: [llms.txt](https://vaadin.com/docs/latest/tools/llms.txt)

# <a id="ce.external"></a>Obtaining a Collaboration Kit Instance in a Servlet (deprecated since V25.3)

> **Warning:** Collaboration Kit is superseded by [signals](https://vaadin.com/docs/latest/flow/ui-state/shared-signals.md) and is scheduled for removal in Vaadin 26.
>
> See [Migrating from Collaboration Kit to Signals](https://vaadin.com/docs/latest/tools/collaboration/migrating-to-signals.md) for how.

When a `VaadinService` instance isn’t available, it’s impossible to get a `CollaborationEngine` instance with the `getInstance()` method. In a servlet, you can get the instance with the `getAttribute()` method, as long as it’s been configured.

`MyServlet.java`

```java
CollaborationEngine ce = (CollaborationEngine) getServletContext()
        .getAttribute(CollaborationEngine.class.getName());
```

In the following example, a message posted through a form is added to a topic as a system message:

`MyServlet.java`

```java
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
    CollaborationEngine ce = (CollaborationEngine) getServletContext()
            .getAttribute(CollaborationEngine.class.getName());
    if (ce == null) {
        resp.sendError(500,
                "Collaboration Kit has not yet been initialized");
        return;
    }
    // Retrieve message that was sent in this POST request
    String userMessage = req.getParameter("message");
    String message = "An anonymous user posted the following message: "
            + userMessage;
    sendMessageToTopic(ce, message);
    resp.setStatus(202);
}

public void sendMessageToTopic(CollaborationEngine ce, String message) {
    // Get SystemConnectionContext from Collaboration Kit
    SystemConnectionContext systemConnectionContext = ce.getSystemContext();

    MessageManager messageManager = new MessageManager(
            systemConnectionContext, systemUser, topicId, () -> ce);

    messageManager.submit(message) // Send message to topic
            .whenComplete((a, t) -> {
                // Close the message manager when done
                messageManager.close();
            });
}
```

`5E7060D6-DF74-4209-9DD4-663C7BC21A10`
