Discussions

Ask a Question

Using IMIS forms calls REST what's the best practice for error handling

Using IMIS forms calls REST what's the best practice recommended if the rest call fails? Support believed the recommendation is that developers should be using the Circuit Breaker pattern with API calls, i.e. they give up after x failures and do not spam the API however this would result in missing data.

Processing Cash Payment after posting Batch

I'll explain my scenario here. What I'm looking to do is apply a payment to the batch and only apply the payment to the member's dues balance if the batch has been posted. I created a batch using the /api/BatchSummary endpoint creating an empty batch. Then in my /api/ComboOrder call I specify a cash amount in payments and list my newly created batch in the AdditionalAttributes section. The body of the ComboOrder goes like this. { "$type": "Asi.Soa.Commerce.DataContracts.ComboOrderData, Asi.Contracts", "Currency": { "$type": "Asi.Soa.Core.DataContracts.CurrencyData, Asi.Contracts", "CurrencyCode": "USD", "DecimalPositions": 2, "ExtensionData": { "$type": "System.Runtime.Serialization.ExtensionDataObject, System.Runtime.Serialization" } }, "Order":{}, "Invoices": { "$type": "Asi.Soa.Commerce.DataContracts.InvoiceSummaryDataCollection, Asi.Contracts", "$values": \[] // InvoiceSummary Results go here. }, "Payments": { "$type": "Asi.Soa.Commerce.DataContracts.RemittanceDataCollection, Asi.Contracts", "$values": [{ "$type": "Asi.Soa.Commerce.DataContracts.RemittanceData, Asi.Contracts", "Amount": { "$type": "Asi.Soa.Core.DataContracts.MonetaryAmountData, Asi.Contracts", "Amount": 0, //Payment amount "Currency": { "$type": "Asi.Soa.Core.DataContracts.CurrencyData, Asi.Contracts", "CurrencyCode": "USD", "DecimalPositions": 2, "ExtensionData": { "$type": "System.Runtime.Serialization.ExtensionDataObject, System.Runtime.Serialization" } }, "IsAmountDefined": true }, "PaymentToken": "", "PaymentTokenSummary": "", "PaymentMethod": { "$type": "Asi.Soa.Commerce.DataContracts.PaymentMethodData, Asi.Contracts", "Name": "Main Checking Account", "PaymentMethodId": "CASH", "PaymentType": "Cash", "Message": "Cash" }, "PayorParty": { "$type": "Asi.Soa.Commerce.DataContracts.CustomerPartyData, Asi.Contracts", "PartyId": "" // ID }, "ReferenceNumber": "", // Comment Check number "Message": "Cash", "Note":"Sequence Number Goes Here" }] }, "AdditionalAttributes": { "$type": "Asi.Soa.Core.DataContracts.GenericPropertyDataCollection, Asi.Contracts", "$values": [ { "$type": "Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts", "Name": "BatchId", "Value": $scope.DataStore.BatchNum } ] } } Once the POST ComboOrder has been called it inserts the member payment to the batch like I expect it would but it also marks the payment in the Dues balance on the member's record. 1. Is there a way to apply the payment only to the batch in ComboOrder? OR 2. Can I add payment entries into a Batch using one of the Batch endpoints? Thanks, appreciate any advice.

How we get sandbox account?

How we get sandbox account to validate the data that we pass to iMIS using API? How we check the membership user that register on our site and pass those data to iMIS by API.

Adding Registration Option to Event in /api/Event

I am sending a POST/PUT call to api/Event with a registration option but the registration option does not show in iMIS. I placed my JSON body below. Using iMIS version 20.3.121.27. { "$type": "Asi.Soa.Events.DataContracts.EventData, Asi.Contracts", "StartDateTime": "2022-09-27T16:00:00", "EndDateTime": "2022-09-27T19:00:00", "Location": { "$type": "Asi.Soa.Membership.DataContracts.LocationPartyAddressData, Asi.Contracts", "Name": "" }, "Capacity": 0, "AdditionalDescription": "", "Functions": { "$type": "Asi.Soa.Events.DataContracts.EventFunctionDataCollection, Asi.Contracts", "$values": [] }, "RegistrationOptions": { "$type": "Asi.Soa.Events.DataContracts.OptionEventFunctionDataCollection, Asi.Contracts", "$values": [ { "$type": "Asi.Soa.Events.DataContracts.OptionEventFunctionData, Asi.Contracts", "RelatedFunctions": { "$type": "Asi.Soa.Events.DataContracts.EventRelatedFunctionDataCollection, Asi.Contracts", "$values": [] }, "AvailableTo": 1, "EventFunctionId": "EVENT05/REGITEM01", "EventFunctionCode": "REGITEM01", "Name": "Registration Option 1", "Description": "", "IsEventRegistrationOption": true, "RegistrationType": 3, "Category": { "$type": "Asi.Soa.Events.DataContracts.EventFunctionCategoryData, Asi.Contracts", "EventFunctionCategoryId": "REG", "Name": "REG" }, "Status": "", "SortOrder": 0, "StartDateTime": "2022-09-27T00:00:00", "Capacity": 0, "MaximumQuantityPerRegistrant": 1, "Item": { "$type": "Asi.Soa.Commerce.DataContracts.ItemSummaryData, Asi.Contracts", "Description": "", "ItemClass": { "$type": "Asi.Soa.Commerce.DataContracts.ItemClassSummaryData, Asi.Contracts", "ItemClassId": "MEETING", "Name": "MEETING" }, "ItemCode": "EVENT05/REGITEM01", "ItemId": "EVENT05/REGITEM01", "Name": "Registration Option 1" }, "ProgramGroups": { "$type": "Asi.Soa.Events.DataContracts.ProgramGroupDataCollectionCollection, Asi.Contracts", "$values": [ { "$type": "Asi.Soa.Events.DataContracts.ProgramGroupDataCollection, Asi.Contracts", "$values": [ { "$type": "Asi.Soa.Events.DataContracts.ProgramGroupData, Asi.Contracts", "ProgramGroupId": "Day/2022-09-27", "Name": "Tuesday, 27 September 2022", "Sort": "2022-09-27" } ] }, { "$type": "Asi.Soa.Events.DataContracts.ProgramGroupDataCollection, Asi.Contracts", "$values": [] }, { "$type": "Asi.Soa.Events.DataContracts.ProgramGroupDataCollection, Asi.Contracts", "$values": [] } ] }, "ConflictCodes": { "$type": "System.Collections.ObjectModel.Collection`1[[System.String, mscorlib]], mscorlib", "$values": [] }, "EventFormSectionId": "", "FinancialEntityId": "", "ContinuingEducationCreditInformation": { "$type": "Asi.Soa.Events.DataContracts.ContinuingEducationCreditInformationDataCollection, Asi.Contracts", "$values": [ { "$type": "Asi.Soa.Events.DataContracts.ContinuingEducationCreditInformationData, Asi.Contracts", "CreditType": "" } ] }, "MinimumAttendance": 0, "ExpectedAttendance": 0, "GuaranteedAttendance": 0, "ActualAttendance": 0, "Settings": 0, "AdditionalAttributes": { "$type": "Asi.Soa.Core.DataContracts.GenericPropertyDataCollection, Asi.Contracts", "$values": [ { "$type": "Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts", "Name": "WebEnabled", "Value": { "$type": "System.Boolean", "$value": true } } ] } } ] }, "RegistrationClosedMessage": "Registration is closed.", "ProgramGroupInfo": { "$type": "Asi.Soa.Events.DataContracts.ProgramGroupInfoDataCollection, Asi.Contracts", "$values": [ { "$type": "Asi.Soa.Events.DataContracts.ProgramGroupInfoData, Asi.Contracts", "ProgramGroupInfoId": "Day", "Name": "Day", "ProgramGroups": { "$type": "Asi.Soa.Events.DataContracts.ProgramGroupDataCollection, Asi.Contracts", "$values": [] } }, { "$type": "Asi.Soa.Events.DataContracts.ProgramGroupInfoData, Asi.Contracts", "ProgramGroupInfoId": "Category", "Name": "Category", "AllowFreeFormValues": true, "ProgramGroups": { "$type": "Asi.Soa.Events.DataContracts.ProgramGroupDataCollection, Asi.Contracts", "$values": [] } }, { "$type": "Asi.Soa.Events.DataContracts.ProgramGroupInfoData, Asi.Contracts", "ProgramGroupInfoId": "Track", "Name": "Track", "AllowFreeFormValues": true, "ProgramGroups": { "$type": "Asi.Soa.Events.DataContracts.ProgramGroupDataCollection, Asi.Contracts", "$values": [] } } ] }, "EventFormId": "", "EventFormSectionId": "", "PublishingInformation": { "$type": "Asi.Soa.Core.DataContracts.PublishingInformationData, Asi.Contracts", "StartDate": null, "ExpirationDate": null, "Keywords": { "$type": "System.Collections.ObjectModel.Collection`1[[System.String, mscorlib]], mscorlib", "$values": [] }, "PublishingState": 0 }, "FinancialEntityId": "", "NotificationPartyId": "", "TimeZoneId": "Eastern Standard Time", "VirtualMeetingUrl": "", "EventId": "EVENT05", "EventCode": "EVENT05", "Name": "Event Series 1", "Description": "Event Series Description", "RegistrationType": 3, "Category": { "$type": "Asi.Soa.Events.DataContracts.EventCategoryData, Asi.Contracts", "EventCategoryId": "" }, "ParentIdentity": { "$type": "Asi.Soa.Core.DataContracts.IdentityData, Asi.Contracts", "EntityTypeName": "Public", "IdentityElements": { "$type": "System.Collections.ObjectModel.Collection`1[[System.String, mscorlib]], mscorlib", "$values": [ "Public Groups" ] } }, "Status": "A", "DisplayLayouts": { "$type": "Asi.Soa.Core.DataContracts.DisplayLayoutDataCollection, Asi.Contracts", "$values": [ { "$type": "Asi.Soa.Core.DataContracts.DisplayLayoutData, Asi.Contracts", "LayoutDirectory": "~/EventDetail" }, { "$type": "Asi.Soa.Core.DataContracts.DisplayLayoutData, Asi.Contracts", "LayoutType": 1, "LayoutDirectory": "~/EventDashboard" } ] }, "AdditionalAttributes": { "$type": "Asi.Soa.Core.DataContracts.GenericPropertyDataCollection, Asi.Contracts", "$values": [ { "$type": "Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts", "Name": "fullAddressAttribute", "Value": { "$type": "Asi.Soa.Membership.DataContracts.FullAddressData, Asi.Contracts", "Address": { "$type": "Asi.Soa.Membership.DataContracts.AddressData, Asi.Contracts", "AddressLines": { "$type": "Asi.Soa.Membership.DataContracts.AddressLineDataCollection, Asi.Contracts", "$values": [ "", "", "" ] }, "CityName": "", "CountryCode": "", "CountrySubEntityCode": "", "FullAddress": "", "PostalCode": "" }, "CommunicationPreferences": { "$type": "Asi.Soa.Membership.DataContracts.CommunicationPreferenceDataCollection, Asi.Contracts", "$values": [ { "$type": "Asi.Soa.Membership.DataContracts.CommunicationPreferenceData, Asi.Contracts", "Reason": "mail" }, { "$type": "Asi.Soa.Membership.DataContracts.CommunicationPreferenceData, Asi.Contracts", "Reason": "bill" }, { "$type": "Asi.Soa.Membership.DataContracts.CommunicationPreferenceData, Asi.Contracts", "Reason": "ship" } ] }, "DisplayName": "" } }, { "$type": "Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts", "Name": "WebEnabled", "Value": { "$type": "System.Boolean", "$value": true } }, { "$type": "Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts", "Name": "MUFPro1", "Value": "a" }, { "$type": "Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts", "Name": "MUFPro2", "Value": "" }, { "$type": "Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts", "Name": "MUFPro3", "Value": "" }, { "$type": "Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts", "Name": "MUFPro4", "Value": "" }, { "$type": "Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts", "Name": "MUFPro5", "Value": "" }, { "$type": "Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts", "Name": "MUFPro6", "Value": "" }, { "$type": "Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts", "Name": "MUFPro7", "Value": "" }, { "$type": "Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts", "Name": "MUFPro8", "Value": "b" }, { "$type": "Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts", "Name": "MUFPro9", "Value": "" }, { "$type": "Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts", "Name": "MUFPro10", "Value": "c" }, { "$type": "Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts", "Name": "TAX_AUTHORITY", "Value": "" }, { "$type": "Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts", "Name": "TAX_BY_ADDRESS", "Value": { "$type": "System.Boolean", "$value": false } }, { "$type": "Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts", "Name": "VAT_RULE", "Value": "" } ] } }

iMIS Cloud and Diagnosing Errors

When iMIS was hosted on-prem, if an error occurred, I could log onto the server and check the event viewer to get a better idea of what was causing the error. With the move to the cloud and no server access, that is no longer possible; however, the need to diagnose errors still exists. Has ASI provided or does ASI intend to provide a way in the cloud to see the specifics of the errors that occur?

Ampersand in Product Code Prevents Product from Displaying in Cloud iMIS

We have numerous product codes that contain ampersands and due to the nature of the url in the cloud version of iMIS, these ampersands are perceived to begin a new query parameter; thus, the appropriate product is not returned. We are able to work around this using %26 in place of the ampersand in the url; however, we cannot instruct our end users to do this.

Party Data Object Cannot Be Deserialized without Gender

If the gender on a person record is empty, the JSON returned at the Party endpoint cannot be deserialized using the Person Data contract because the gender object is looking for a code which appear to be only M or F and does not take into account an empty value.

Create Event Status Other then active

I am trying to create an event using API call. I have not been able to create event with a status other then 'A'. if I specify "Status": "P" for Pending or "Status": "F" for Frozen the event get's created with a status of 'A'. If I specify a custom status of "Status": "S" then I get a bad request error. Is there a way to create an event that isn't active immediately?

QueryDefinition

Is there an endpoint that will show "all" parameters for an IQA? The [FindByPath](https://developer.imis.com/reference/executesmquerydefinition) only seems to return inputs required by end-users. There may be filters whose values are coming from `URL parameters`, for example: `"@url:ID"`. How are those being handled in a REST API call? Thank you for any assistance.

Updates an instance of LegacyEventFunctionAttendance by id

Hi, while trying to use this in 20.3.121.27, I get that the requested resource does not support http method 'PUT'. Has this functionality been removed in iMIS EMS? It is still listed as a method in the API Reference, https://developer.imis.com/reference/putlegacyeventfunctionattendancebyid.