This looks like it's about the SnapLogic platform's UI rollout timeline, rather than pipeline building โ let me look into that for you. Context on the New UI Rollout Timeline Based on the release history, SnapLogic's UI evolution has actually happened in several distinct phases over the years, which might explain the confusion during your screening: Key Milestones 1. SnapLogic Studio (Preview) โ introduced around June/July 2022 - Rolled out incrementally as a "modern, easy-to-use interface" - Started with features like Execution Overview, notifications, and the Infrastructure System overview page - Explicitly labeled as "Preview," meaning adoption was gradual and opt-in for a while 2. IIP UI Redesign โ September 2022 - A broader redesign of the core SnapLogic IIP interface (Designer, navigation menus, toolbar icons, user profile dropdown, Universal Search icon change, etc.) - This changed many day-to-day interaction patterns (e.g., where to find Save/Validate/Execute icons, how to access User Settings) 3. Monitor replacing Dashboard โ phased between April 2025 and October 2025 - April 2025: Monitor became the default app; Dashboard tab replaced by Monitor tab, but Dashboard still accessible via the waffle menu - October 2025: Dashboard was fully retired - November 2025: All Dashboard documentation removed from Confluence 4. Classic Manager retirement โ August 2026 - Classic Manager was fully retired, with Project Manager and Admin Manager providing full feature parity - This is the most recent major structural UI change 5. Designer Asset Palette redesign โ August 2026 - The legacy Asset palette was deprecated in favor of a unified left-navigation experience Why Someone Might Seem "Unfamiliar" with the New UI Given this staggered rollout across 2022 through 2026, a few plausible explanations: - Org-level lag: Not all Orgs upgrade Snaplex/UI features at the same time โ SnapLogic's release process allows a grace period (~4 weeks + 2 days) before mandatory upgrades, and some settings (like Dashboard access via the waffle menu) persisted for months after a nominal "replacement." - Feature-specific familiarity: Someone could be a active pipeline builder but rarely touch Monitor, Admin Manager, or the Asset Palette โ so "unfamiliar with the new UI" could mean unfamiliar with one specific redesigned area, not the whole platform. - Role-based exposure: A user who mainly works in Designer building pipelines may not have engaged with Classic Manager retirement or Admin Manager parity changes at all. - Timing of onboarding: If the person's platform experience predates or significantly lags recent releases, several UI layers (Studio, Monitor, new Asset Palette) could all feel "new" simultaneously. If you'd like, I can pull more detail on any specific UI change (e.g., Monitor vs. Dashboard differences, or the Designer Asset Palette redesign) to help you calibrate what "actively uses the platform" should reasonably mean in your screening criteria.
Summary: August 2026 Release โ Manager Tool Changes Thanks for sharing that update! Here's the key takeaway: - General Availability: The August 2026 release went GA yesterday, after a week in UAT. - Classic Manager retired: As of this release, the former Classic Manager is no longer available. - New separated tools: - Admin Manager โ handles administrative tasks - Project Manager โ handles asset management tasks For full details, the [August 2026 Release Notes](https://docs-snaplogic.atlassian.net/wiki/spaces/SD/pages/4904321031/August+2026+Release+Notes) are the best place to look. If you'd like, I can look up more specifics on what moved to Admin Manager vs Project Manager, or help with anything else SnapLogic-relatedโjust let me know!
Not quite โ the timeline is a bit different from what you described. Here's the actual sequence based on the release notes: Timeline of the UI Change - September 2025 Release: SnapLogic introduced a New SnapLogic User Experience Preview โ this was an opt-in preview at the time, not the default. - February 2026 Release: This is when that new experience became the default, replacing the classic look for most users. - April 2026 Release: This release rolled out further User Experience Updates โ refreshing the waffle menu, Designer, and introducing the new Project Manager. It also split Classic Manager's functionality across the new Project Manager, Admin Manager, and Monitor. What Happens to Classic Manager Classic Manager itself isn't disappearing immediately in April โ it remains accessible from the waffle menu, but it's slated to be fully retired in the August 2026 release. Summary So to directly answer your question: the classic UI stopped being the default back in February 2026, not April. The April 2026 release built on that transition by refreshing more of the interface (Designer, waffle menu, Project Manager) and further breaking apart Classic Manager's remaining functionality โ but it wasn't the release that first made the new UI the default. Let me know if you'd like more detail on any part of this transition!
Attaching a File to an Email Without Saving It to a Drive First Based on the SnapLogic documentation, the Email Sender Snap handles email attachments โ but it has a specific requirement regarding file sources. --- โ ๏ธ Short Answer: Not Directly The Email Sender Snap's Attachments field requires a URL pointing to a file location. It supports the following file protocols: | Protocol | Example | |----------|---------| | SLDB (SnapLogic Database) | sldb:///myfile.csv | | SFTP | sftp://user@sftp.example.com/path/file.xlsx | | FILE | file:////path/to/file.txt | | SMB | smb://user@host:445/share/file.csv | This means the file must exist at a reachable location before it can be attached โ there is no native way to attach an in-memory or dynamically generated data stream directly without first writing it somewhere. --- โ Recommended Workaround If you're generating data dynamically in your pipeline and want to attach it to an email, here's the typical approach: 1. Generate your data (e.g., from a query, transformation, etc.) 2. Write the file temporarily to SLDB (SnapLogic's built-in storage) using a File Writer Snap 3. Reference the SLDB path in the Email Sender Snap's Attachments field (e.g., sldb:///myfile.csv)
๐ก SLDB is the easiest option since it's built into SnapLogic โ no external drive or SFTP setup needed. Files written to SLDB within your project are immediately accessible.
--- ๐ Key Notes - If you want to send an email with only an attachment and no body data, you can place the Email Sender Snap unconnected on the canvas (no input view) and just configure the Attachments field. - For multiple files, you can use a Directory Browser upstream to collect all file paths and pass them to the Email Sender Snap. - Temporary files written to SLDB are not automatically deleted, so you may want to clean them up after sending if storage is a concern. --- Would you like help building a pipeline that generates data, writes it to SLDB, and sends it as an email attachment?
Thank you for sharing your observations! I'm here to help with any SnapLogic-related questions or tasks. It looks like there's no pipeline or Snap currently loaded in the canvas. Whenever you're ready, feel free to: - ๐ง Build a pipeline โ Describe what you'd like to accomplish and I can generate one for you. - ๐ Ask a question โ I can help with SnapLogic features, expressions, Snap configurations, and more. - ๐ Refine an existing pipeline โ Load a pipeline and I can help modify or improve it. What would you like to do? ๐
It looks like you're sharing an observation about your pipeline behavior โ that's great progress! ๐ To make sure I understand your situation correctly, could you clarify what you're looking for? Here are a few ways I can help: - Explain the behavior โ Why mapping $ to $content before another Mapper Snap produces the expected result. - Guidance on Mapper Snaps โ Best practices for chaining Mapper Snaps or structuring your mappings. - Modify your pipeline โ If you'd like me to apply changes to your current pipeline. - Something else โ Let me know what you're trying to achieve! What would you like to do next?
Great question! Let me break down what's happening and why you're seeing a null response. --- ๐ What's Happening The behavior you're experiencing is expected, but it stems from a misunderstanding of how the incoming document structure works in an Ultra Task pipeline. Ultra Task Input Document Structure When a request is sent to an Ultra Task, the incoming data is not a flat document with headers at the top level. Instead, it arrives in a structured envelope. The key fields are: | Field | Description | |---|---| | $content | The request body | | $query | Query string parameters | | $headers | Incoming HTTP headers | | $method | HTTP method used (GET, POST, etc.) | So the incoming headers are not passed through as top-level fields โ they live under $headers. --- โ Why You Got a Null Response Here's what likely happened step by step: 1. The Mapper received the Ultra Task envelope document (with $content, $headers, etc.). 2. Pass Through was enabled, so all fields from the incoming document should pass through. 3. You mapped a static value of 200 to $status โ this part works fine. 4. However, the output view of the Mapper was left unconnected (as required for Ultra Task response), which means the document is sent back as the response. The null response is most likely caused by one of the following: โ ๏ธ Most Likely Cause: Missing Response Formatting Ultra Tasks require the response document to be properly structured for the FeedMaster to return it to the caller. Specifically: - The response body should be under $content - HTTP response headers (like status) should be set under $status at the correct level If the Mapper outputs a document that doesn't conform to the expected response envelope structure, the Ultra Task may return a null or empty response. --- โ What You Should Do To return a meaningful response from an Ultra Task, your Mapper should construct the response envelope correctly. Here's a recommended mapping: | Target Path | Value / Expression | Notes | |---|---|---| | $content | $content (or your desired body) | The response body | | $status | 200 | HTTP status code | | $headers.Content-Type | "application/json" | Optional but recommended |
๐ก Pass Through will carry over the incoming fields, but the Ultra Task FeedMaster looks for a specific structure in the output document to build the HTTP response. Simply having $status = 200 at the top level with pass-through may not be sufficient if $content is absent or null.
--- ๐งช Tip: Use a Record Replay Snap to Inspect the Input To understand exactly what the incoming Ultra Task document looks like, temporarily add a Record Replay Snap at the very beginning of your pipeline. This will let you inspect the full envelope structure (headers, body, query params, etc.) before any transformation. --- In summary: the incoming headers are present in the document (under $headers), but the null response is likely due to the response document not being structured in the way the Ultra Task FeedMaster expects. Make sure $content is populated in your Mapper output.
Accessing External Client HTTP Headers in an Ultra Task Pipeline Great question! Based on the SnapLogic documentation, this is actually natively supported by the Ultra Task's FeedMaster input document structure. Here's everything you need to know: --- How It Works When an external client (e.g., Postman) sends an HTTP request to your Ultra Task's FeedMaster endpoint, all HTTP request headers are automatically injected into the root of the input document received by your pipeline.
โ ๏ธ Important: Header keys are always received in lowercase.
--- Input Document Structure The input document your pipeline receives will look something like this:
json
{
"authorization": "Bearer <token>",
"content-type": "application/json",
"x-custom-header": "some-value",
"accept": "application/json",
"content": { ... },
"uri": "/api/1/rest/feed-master/queue/...",
"method": "POST",
"query": { "param1": ["value1"] },
"task_name": "my-ultra-task",
"path_info": "...",
"server_ip": "...",
"server_port": 8084,
"client_ip": "...",
"client_port": 54321
}
Key points: - Headers โ available at the root level of the input document (e.g., $content-type, $authorization) - Request body โ available under the $content field - HTTP method โ available as $method - Query parameters โ available under $query --- How to Output All Headers To capture and output all headers sent by the external client, you can use a Mapper Snap to extract the fields you need from the root of the input document. Since headers are at the root level alongside other injected fields, you can selectively map them or pass through the entire document. Option 1: Pass Through the Entire Input Document Simply connect your pipeline's input view directly to an output view (or through a Mapper with Pass Through enabled). The entire document โ including all headers โ will flow through. Option 2: Selectively Map Specific Headers In a Mapper Snap, reference headers directly using their lowercase names: | Expression | Target Path | Description | |---|---|---| | $authorization | $.authorization | Authorization header | | $content-type | $["content-type"] | Content-Type header | | $x-custom-header | $["x-custom-header"] | Any custom header |
๐ก Tip: For header names with hyphens (e.g., content-type), use bracket notation in expressions: $["content-type"]
--- Summary | What you want | Where to find it | |---|---| | All request headers | Root fields of the input document (lowercase keys) | | Request body | $content field | | HTTP method | $method field | | Query string params | $query field | No special configuration is needed โ the FeedMaster automatically injects all of this into the input document. You just need to reference the header fields at the root level of the document within your pipeline logic.
Here's a comprehensive guide on how to extract all headers from an HTTP request for debugging purposes in SnapLogic: --- ๐ Extracting All Request Headers for Debugging Option 1: Enable Debug on the HTTP Client Snap (Recommended) The HTTP Client Snap has a built-in Enable Debug checkbox that captures full request and response details โ including all headers. Steps: 1. Open your HTTP Client Snap configuration. 2. Go to the Views tab. 3. Add a second output view to the Snap. 4. Enable the Enable debug checkbox.
๐ When a second output view is added, the Snap writes full debug information (request headers, response headers, status codes, etc.) to that second output view. In case of errors, this debug info is also written to the error view.
--- Option 2: Access Headers via Pipeline Parameters (Triggered Tasks) If your pipeline is invoked via a Triggered Task, several HTTP request headers are automatically passed as pipeline parameters. You can reference them using the _ prefix: | Header | Pipeline Parameter | |---|---| | Content-Type | _CONTENT_TYPE | | Accept | _HTTP_ACCEPT | | Accept-Encoding | _HTTP_ACCEPT_ENCODING | | Date | _HTTP_DATE | | User-Agent | _HTTP_USER_AGENT | | Referer | _HTTP_REFERER | For custom headers (e.g., X-TENANT-ID): - Define a pipeline parameter with the header name fully capitalized and hyphens replaced by underscores (e.g., X_TENANT_ID). - Reference it in expressions as _X_TENANT_ID. --- Option 3: Map and Log Headers Downstream Once debug output is enabled on the HTTP Client Snap, you can: 1. Connect a Mapper Snap to the second (debug) output view. 2. Map specific header fields from the debug output for logging or inspection. 3. Optionally route the output to a JSON Formatter + File Writer to persist the headers for later analysis. --- ๐ก Tips for Debugging Headers - The Authorization header is never passed to the pipeline for security reasons. - For Secured Headers Accounts, header values are hidden in debug output to protect sensitive data. - Make sure the Enable debug checkbox is only selected when needed โ leaving it on by default can cause memory accumulation in long-running pipelines. --- Would you like me to build a pipeline that captures and logs all request headers for debugging?
Capturing Incoming HTTP Headers in an Ultra Task via FeedMaster When a Low-latency Ultra Task receives an HTTP request through a FeedMaster, the headers are automatically injected into the pipeline's input document. Here's everything you need to know: --- ๐ฅ How Headers Are Delivered The FeedMaster converts the incoming HTTP request into an input document and routes it to your pipeline's unconnected input view. The behavior depends on the input view type: 1. Document Input View (most common) - HTTP request headers are placed at the root of the input document. - The request body is placed in the $content field. - โ ๏ธ Header keys are always received in all lowercase. For example, the User-Agent HTTP header would be referenced as:
$['user-agent']
2. Binary Input View - HTTP headers are available in the binary document's header (not the root document). --- ๐ Additional Fields Injected into the Input Document Beyond the HTTP headers, SnapLogic automatically injects the following fields into every input document: | Field | Description | |---|---| | $uri | The original URI of the request | | $method | The HTTP request method (GET, POST, etc.) | | $query | Parsed query string as an object (each key maps to a list of values) | | $task_name | The name of the Ultra Task | | $path_info | The portion of the path after the Task URL | | $server_ip | IP address of the FeedMaster that received the request | | $server_port | TCP port of the FeedMaster | | $client_ip | IP address of the client that sent the request | | $client_port | TCP port of the client | --- ๐ Accessing Headers in Your Pipeline Since headers land at the root of the input document, you can reference them directly in a Mapper or any expression-capable Snap:
javascript
// Standard header (lowercase)
$['content-type']
// Authorization header
$['authorization']
// Custom header (e.g., X-My-Header)
$['x-my-header']
--- ๐ก Key Tips - Always use lowercase when referencing header names โ SnapLogic normalizes all header keys to lowercase regardless of how they were sent. - Use a Mapper Snap early in your pipeline to extract and rename the headers you need for downstream processing. - The $content field holds the request body, so be careful not to confuse it with the headers at the root level. - If you need to return custom headers in the response, map them to the root $ of the output document, the response body to $content, and the HTTP status code to $status. --- Example: Query String Parsing If the incoming request has a query string like foo=bar&foo=baz&one=1, the $query field will look like:
json
{
"foo": ["bar", "baz"],
"one": ["1"]
}
This makes it easy to handle multi-value query parameters in your pipeline logic.
