Discussions

Ask a Question

PowerBi iMIS

Hi, Has anyone previously integrated iMIS with PowerBi. How was your experience. How long did the project take? Kind regards, Saif

Create Event Registration options with Pricing Group via REST API

Hello, We are looking to creating Events via the iMIS REST API, which would include setting up different Registration options with various Pricing Group information. For example, having different pricing policies for members and non-members (default) or even having custom Pricing Group defined. From RiSE website there are always two Pricing Group out of the box on any event: Default and Members ![](https://files.readme.io/cb3e286-image.png) When we query the ItemPrice endpoint it always returns only one line, for example: `api/ItemPrice?ItemId=ANNCONF/1DAY` ```json { "$type": "Asi.Soa.Core.DataContracts.PagedResult`1[[Asi.Soa.Commerce.DataContracts.ItemPriceData, Asi.Contracts]], Asi.Contracts", "Items": { "$type": "System.Collections.Generic.List`1[[Asi.Soa.Commerce.DataContracts.ItemPriceData, Asi.Contracts]], mscorlib", "$values": [ { "$type": "Asi.Soa.Commerce.DataContracts.ItemPriceData, Asi.Contracts", "ItemPriceId": "ANNCONF/1DAY:Standard:00000000-0000-0000-0000-000000000000:USD", "Item": { "$type": "Asi.Soa.Commerce.DataContracts.ItemSummaryData, Asi.Contracts", "ItemId": "ANNCONF/1DAY" }, "PriceSheet": { "$type": "Asi.Soa.Commerce.DataContracts.PriceSheetSummaryData, Asi.Contracts", "Description": "", "Name": "", "PriceSheetId": "Standard" }, "Currency": { "$type": "Asi.Soa.Core.DataContracts.CurrencyData, Asi.Contracts", "CurrencyCode": "USD", "DecimalPositions": 2 }, "SalesUom": { "$type": "Asi.Soa.Commerce.DataContracts.UomSummaryData, Asi.Contracts", "UomId": "00000000-0000-0000-0000-000000000000", "Name": "", "Description": "" }, "DefaultPrice": { "$type": "Asi.Soa.Core.DataContracts.MonetaryAmountData, Asi.Contracts", "Amount": 200.0000, "Currency": { "$type": "Asi.Soa.Core.DataContracts.CurrencyData, Asi.Contracts", "CurrencyCode": "USD", "DecimalPositions": 2 } }, "IncomeAccount": { "$type": "Asi.Soa.Commerce.DataContracts.FinancialAccountData, Asi.Contracts", "GLAccount": { "$type": "Asi.Soa.Commerce.DataContracts.GLAccountData, Asi.Contracts", "GLAccountCode": "" } }, "SpecialPriceRules": { "$type": "Asi.Soa.Commerce.DataContracts.SpecialPriceRuleDataCollection, Asi.Contracts", "$values": [ { "$type": "Asi.Soa.Commerce.DataContracts.SpecialPriceRuleData, Asi.Contracts", "SpecialPriceRuleId": "NM:EarlyFee", "Name": "NM:EarlyFee", "Description": "Non-Member", "EndDate": "2023-03-01T00:00:00", "Amount": { "$type": "Asi.Soa.Core.DataContracts.MonetaryAmountData, Asi.Contracts", "Amount": 175.0000, "Currency": { "$type": "Asi.Soa.Core.DataContracts.CurrencyData, Asi.Contracts", "CurrencyCode": "USD", "DecimalPositions": 2 } } }, { "$type": "Asi.Soa.Commerce.DataContracts.SpecialPriceRuleData, Asi.Contracts", "SpecialPriceRuleId": "NM:LateFee", "Name": "NM:LateFee", "Description": "Non-Member", "BeginDate": "2023-05-03T00:00:00", "EndDate": "0001-01-01T00:00:00", "Amount": { "$type": "Asi.Soa.Core.DataContracts.MonetaryAmountData, Asi.Contracts", "Amount": 250.0000, "Currency": { "$type": "Asi.Soa.Core.DataContracts.CurrencyData, Asi.Contracts", "CurrencyCode": "USD", "DecimalPositions": 2 } } }, { "$type": "Asi.Soa.Commerce.DataContracts.Pricing.LegacyPriceRuleData, Asi.Contracts", "RuleCustomerType": "NM" } ] } } ] }, "Offset": 0, "Limit": 100, "Count": 1, "TotalCount": 0, "NextPageLink": null, "HasNext": false, "NextOffset": 0 } ``` This looks similar to a question asked before: [Create Event RegistrationOptions with the API](https://developer.imis.com/discuss/651b28adddc70b000b40b344) Is there additional information available on this subject? Or should we contact [[email protected]](mailto:[email protected]) about an api enhancement? Thank you for your consideration.

Token expiration, high volume site

One of our EMS-on-prem clients is making heavy use of the REST API to pull date for their main portal site. iMIS is not their website, but their portal site makes multiple REST calls to gather information to display on the first page after a login. They are big on redundancy and load distribution. The portal site is served by multiple web servers, which send requests to a "Finance API" server, which then performs all REST calls. The Finance API server may have many concurrent requests in process at once. In the two weeks since they went live, they have had multiple occasions where a request with a non-expired API token returned an Unauthorized. Through experimentation and help from Tech Support, we learned that these are some of the reasons tokens will be invalidated: 1. The website or app pool restarts 2. A user pushes the "Purge System Cache" button 3. When a new token is requested for the same user, the previous token for that user is expired. What else can cause a token to be invalidated? For item #1: Is there a way to configure EMS so that issued tokens will be remembered across restarts? For example, this client would be willing to configure their own Redis cluster, so two EMS web servers can share their pool of known tokens. For item #2: Could the tokens be excluded from the purge button? For item #3: What is the intended way for a third party process to acquire and manage tokens when that process may be multi-threaded? Ideally, they would like the Finance API to be multiple servers, each managing its own token. If requesting a token invalidates other tokens for the same user, will we need distinct user/password pairs for each process that is accessing REST?

Editing behavior of Contact Sign In iPart

Hi! I'm trying to add something to the authentication workflow of the Contact Sign In iPart but it seems to refer to things that are not visible. For example I can see the aspx files in iParts\\Contact Management\\ContactSignIn such as ContactSignInDisplay.ascx, but I don't see the Codebehind, ContactSignInDisplay.ascx.cs, which I assume is in DLL. Is it possible to see the codebehind source and guides on augmenting the sign-in flow, or is it necessary to write a new sign in portal from scratch?

Type Definitions from API References

The API references a heap of type definitions, for example: ![](https://files.readme.io/fcf10d5-image.png) This isn't super helpful with the type definition of Asi.Soa.Communications.DataContracts.TaskDefinitionTriggerDataCollection, Asi.Contracts Where are these type definitions located? It would be great to have the source to be able to make Typescript types out of them. Will help a huge time with building API requests. Thanks

Create Event RegistrationOptions with the API

I'm looking to add a Registration option and pricing through the API. The way I go about it currently is to clone an event that has RegistrationOptions/Functions and then update the pricing using the /api/ItemPrice endpoint. Below is an example I use to add function code "REG" to the EXAMPEVENT code. PUT /api/Event/EXAMPEVENT ```json json { "$type": "Asi.Soa.Events.DataContracts.EventData, Asi.Contracts", "Location": { "$type": "Asi.Soa.Membership.DataContracts.LocationPartyAddressData, Asi.Contracts", "Name": "" }, "Capacity": 0, "AddGuests": true, "RegisterOthers": true, "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": 3, "EventFunctionId": "EXAMPEVENT/REG", "EventFunctionCode": "REG", "Name": "Registration", "Description": "", "IsEventRegistrationOption": true, "RegistrationType": 3, "Category": { "$type": "Asi.Soa.Events.DataContracts.EventFunctionCategoryData, Asi.Contracts", "EventFunctionCategoryId": "REG", "Name": "REG" }, "Status": "", "SortOrder": 0, "Location": { "$type": "Asi.Soa.Membership.DataContracts.LocationPartyAddressData, Asi.Contracts", "Name": "" }, "Capacity": 300, "MaximumQuantityPerRegistrant": 1, "Item": { "$type": "Asi.Soa.Commerce.DataContracts.ItemSummaryData, Asi.Contracts", "Description": "", "ItemClass": { "$type": "Asi.Soa.Commerce.DataContracts.ItemClassSummaryData, Asi.Contracts", "ItemClassId": "MEETING", "Name": "Event Function" }, "ItemCode": "EXAMPEVENT/REG", "ItemId": "EXAMPEVENT/REG", "Name": "Registration" }, "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": "Date Not Specified", "Name": "Date Not Specified", "Sort": "9999-01-01" } ] }, { "$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": "" } ] } } ] }, "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": "2023-11-13T23:59:00", "Keywords": { "$type": "System.Collections.ObjectModel.Collection`1[[System.String, mscorlib]], mscorlib", "$values": [] }, "PublishingState": 0 }, "FinancialEntityId": "GEN", "NotificationPartyId": "", "EventId": "EXAMPEVENT", "EventCode": "EXAMPEVENT", "Name": "Example Event", "Description": "This survey course presents the methods and techniques that organizations in our industry use to efficiently and successfully manage processes. Join us as we compare and contrast practices and discuss appropriate circumstances for which to apply each practice.", "RegistrationType": 3, "Category": { "$type": "Asi.Soa.Events.DataContracts.EventCategoryData, Asi.Contracts", "EventCategoryId": "CH" }, "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, "LayoutDocument": { "$type": "Asi.Soa.Core.DataContracts.DocumentSummaryData, Asi.Contracts", "DocumentId": "debfa74b-e29a-496d-ac46-1b033417481a" } } ] }, "StartDateTime": "2023-10-22T00:00:00", "EndDateTime": "2023-10-22T00:00:00", "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": "ViewOnly", "Value": { "$type": "System.Boolean", "$value": false } }, { "$type": "Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts", "Name": "MUFPro1", "Value": "" }, { "$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": "" }, { "$type": "Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts", "Name": "MUFPro9", "Value": "" }, { "$type": "Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts", "Name": "MUFPro10", "Value": "" }, { "$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": "" } ] } } ``` In the API result it does show with a successful 200, but if I run a GET call or try to load it up in iMIS it doesn't show. Could there be a missing value? And if there is an option to add pricing groups to the event registration items I would love to see an example of that as well.

Adding some text to a Page Content containing a Single Sign-On iPart

Hi, We are trying to add some text on a page content containing a Single Sign-On iPart (the one where you select a client application for a SSO connection). Since the redirection takes 10-15 seconds to process, we would like to add a text like "Please wait while we redirect you". Adding a Content Html to the page doesn't work, it seems that this content get ignored or erased when we are browsing the page and the redirection is being processed. Does someone have an idea on how to make it work? We are still on version 20.2.66.1330. Thanks.

iMIS Power BI Integration

Hi, Is it possible to integrate iMIS with PowerBi. So that PowerBi reports and dashboards can be made from live iMIS data. If yes, how difficult is it to setup. Kind regards, Jim

Convert a large list of dropdown values for a general lookup table into iMIS

How can we convert a large list of dropdown values for a general lookup table into iMIS instead of manually entering them in iMIS?

Member Engagement Director

How do I give a temporary password in IMIS. Give me the steps