Recent Content
Generate expression file from database query
For some data transformations I would like to use an expression file that is generated each night, instead of querying a SQL database everytime the pipeline is started. I already have data available in the database and now I need to get the data transformed in the expression file JSON format, but I am stuck on getting the right ouput. Coming from a XML oriented environment (with extensive knowledge in XSL but not so much JSON) I have quite some issues with switching to snaps and JSON... Data sample (JSON) from the database [ { "code": "ARTICLEGROUP", "source": "JLG", "target": "10" }, { "code": "COMMODITYCODE", "source": "31251501", "target": "0" }, { "code": "COUNTRYCODE", "source": "AF", "target": "AF" }, { "code": "COUNTRYCODE", "source": "AL", "target": "AL" }, { "code": "COUNTRYCODE", "source": "DZ", "target": "DZ" }, { "code": "COUNTRYCODE", "source": "AS", "target": "AS" }, { "code": "COUNTRYCODE", "source": "AD", "target": "AD" }, { "code": "COUNTRY_ISOCODE", "source": "ARE", "target": "AE" }, { "code": "COUNTRY_ISOCODE", "source": "AFG", "target": "AF" }, { "code": "COUNTRY_ISOCODE", "source": "ALA", "target": "AX" }, { "code": "COUNTRY_ISOCODE", "source": "ALB", "target": "AL" }, { "code": "UOM", "source": "EA", "target": "pi" }, { "code": "UOM", "source": "M", "target": "me" }, { "code": "UOM", "source": "BG", "target": "za" } ] Desired output { "ARTICLEGROUP" : { "JLG": "10" }, "COMMODITYCODE" : { "31251501": "0" }, "COUNTRYCODE" : { "AF": "AF", "AL": "AL", "DZ": "DZ", "AS": "AS", "AD": "AD" }, "COUNTRY_ISOCODE" : { "ARE": "AE", "AFG": "AF", "ALA": "AX", "ALB": "AL" }, "UOM" : { "EA": "pi", "M": "me", "BG": "za" } , getValue : (type, source) => this[type][source] } Anyone can point me in the right direction? Have tried multiple things already, but I can't get the "arrays" right for some reason.Can we generate XML file in pretty print format using native snapLogic snaps?
Hi Team, I was curious to know if anybody has worked on a use case where they are generating an XML file in pretty print format? We do have "pretty-print" option in JSON formatter however the same is not available in XML formatter snap. Any suggestions? Thanking in advance. Best Regards, DarshSolved686Views0likes3Comments401 error with HTTP Client and NTLM
Hello, I'm trying to connect to an API with NTLM authentication using the Snap HTTP Client. Problem: I'm getting a 401 - Unauthorized response from the endpoint. The same request responds successfully on Postman. I think the problem comes from the Linux Groundplex. Did anyone had the same issue? How did you solve it? Thank you.33Views0likes1CommentIngesting Data into Veeva Vault CRM via SnapLogic – Alternatives to SFDC Snaps
We are currently in the process of migrating from our existing Veeva CRM (Salesforce-based) platform to Veeva Vault CRM. In our current integration landscape, we use SnapLogic to ingest data from our Specialty Pharma SFTP source into Veeva CRM, leveraging the Salesforce (SFDC) snaps for data ingestion and transformation. However, as we transition to Vault CRM, we’ve identified a gap—SnapLogic does not currently provide a native Snap pack for Veeva Vault CRM. We understand that support for Vault CRM is on SnapLogic’s product roadmap, but it is not expected in the immediate future. As part of our integration planning, we are reaching out to the SnapLogic community and experts to explore the following: Are there any existing Snap packs (e.g., REST, HTTP Client, SOAP, or JDBC snaps) that can be configured to support integration with Vault CRM? Has anyone implemented custom pipelines or reusable components for Vault CRM ingestion using generic SnapLogic snaps? Any known limitations, authentication considerations or Vault-specific constraints we should be aware of when building these integrations? We greatly appreciate any insights, lessons learned, or recommendations from those who have explored similar integration use cases. Thank you in advance for your time and input.22Views0likes2CommentsPagination and nextCursor in header
Hello all, I'm using a HTTP Client snap to retrieved a few thousands of records, and I need to use pagination. The system that I'm calling is using cursor based pagination. If the number of elements returned is higher than the limit defined, the response header will contain a "nextCursor" value that I need to use as parameter to the "cursor" key for the next call, and so on until no more "nextCursor". This should be working fine, however I can't seem to get the content of the response header for my next call. When I use Postman I can see that there is a header returned, and the value that I need is stored under the key "X-Pagination-Next-Cursor" and not "nextCursor" as I expected. How can I access the values of the header? In the Snap itself, in the Pagination section, there is a "Override headers" part that I tried to configure by mapping the "cursor" key with either $nextCursor, $headers.nextCursor or $headers.X-Pagination-Next-Cursor, but nothing works, I'm only getting the records from the first page, there is no failure and no pagination. Thanks in advance for any help! JFJavascript to promote top level lists
I just cannot seem to get this expression to work. Is purpose is to scan for top-level fields of an object and replaces any single-element array value (list) with just that one value. I do not want it to recurse. Here are some examples I am looking for: Input { "name": ["Alice"], "roles": ["admin", "editor"], "active": [true], "profile": { "city": ["Springfield"] } } Output: { "name": "Alice", // promoted "roles": ["admin", "editor"], // unchanged "active": true, // promoted "profile": { "city": ["Springfield"] } // untouched (no recursion) } I keep getting: Failure: The output document is a primitive value: null, Reason: The output document must be an array or object, Resolution: Check for target paths that write to the root What am I missing? { promoteSingleArrays : (obj) => // Promote top-level single-item arrays of primitive types only obj .mapValues((val, key) => (Array.isArray(val) && val.length == 1 && (typeof val[0] == 'string' || typeof val[0] == 'number' || typeof val[0] == 'boolean')) ? val[0] : val ) }SolvedSnapLogic Product Update Snippet Videos - March 2025 Release
Enhance your SaaS and database account governance with this valuable update to the SnapLogic Asset Catalog. Administrators can now monitor and manage not only Tasks (APIs) and Pipelines, but also all associated accounts, within a single, unified interface. Custom Privacy Notice: In today's data-driven world, ensuring compliance with data privacy regulations like GDPR and CCPA is of paramount importance for enterprises. SnapLogic's latest feature aims to simplify this process by providing users with a clear and accessible notice about data privacy considerations. New Oracle HCM (Human Capital Management) Snap Pack: With this Snap Pack, businesses can: Retrieve employee data for reporting, compliance, and workforce planning. Automate employee record management, ensuring real-time updates to HR systems. Sync HR data with payroll, finance, and IT systems for seamless cross-department operations. Maintain accurate employee records by enabling bulk data updates and efficient record-keeping.Google Sheets Subscribe questions
Hello all, I'm trying to use the Google Sheets Subscribe snap, and either I misconfigured something, or my expectations about the results are wrong. I can subscribe successfully to a Google Sheet, and my expectation is to get a call sent to my triggered task with the changes that were made by users in the Google Sheet document. After my test, I saw only empty messages sent to my triggered task, so it seems like I'm only receiving a "ping" when there is a change in the document. Is this expected, or am I supposed to get a summary of the change? Also I'm wondering why there is an expiration for the Google Sheet subscription? How am I supposed to do if I want to monitor the document permanently? Thanks! JFBasic string transformations not working
Hi Team, I observed that basic string transformations are not working, few of the scenarios have been listed below: Trimming spaces from the text Changing the text from uppercase to lowercase and vice-versa I have used both the mapper and conditional snap however haven’t found any luck to it. Examples for the above-listed scenario: (1) Text is Darsh and if I put the transformation to change this to uppercase, it should return DARSH however the end result remains as is (2) Text is " Darsh", after using trim(), trimLeft(), trimRight(), the expected result should be “Darsh” however the end result doesn’t change. Any help on this would be highly appreciated. Regards, DarshSolved