cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
384
Views
2
Helpful
9
Replies

ISE 3.2 - Unable to import guest .csv into sponsor portal

Heikonis
Level 1
Level 1

Hello everyone,

we are currently in the process of swapping to a ISE sponsor portal as our guest network.

Everything is running smoothly, creating manual vouchers or random guests. However, I cannot for the love of it, get it to use a .csv-file to import multiple guest datasets.

When I download the template that the portal provides I get the following output in a UTF8-encoded .csv file (german equivalents in front):

"* Vorname / First name:,* Nachname / Last name:,* Unternehmen / Company:,* Grund für Besuch / Reason for visit:"

The browser is set to english, that way it also generates the english equivalent behind it, if it was set to german, these are omitted.

Since we use the ü,ö,ä, in our germany based company and those are not part of the english alphabet, I made sure that it is UTF8-encoded just like the documentation on importing guests from file states. (ö,ü,ä, are also the reason for this abomination "für" - that only happens when I open it in excel though, in notepad++ for example it is displayed correctly)

No matter how I try and fill this .csv-file I get the error: "The import file must be a .csv file and use the correct format. Download and use the template file and try again."

I  am at my wits end. Even trying to upload the same, originally provided, empty file nets me this result. 

I am desperate to get this running as our users don't want to input huge amounts of guest data manually. Can someone please give me an example of just exactly how it works for you? Obv. you can use whatever names and data you like, but if it works in your guest portal to import a .csv with this data, please show me the input in that file.

If there is any information needed that I missed, please let me know.

Version: 3.2.0.542

Patch Information: 3,4,6,7

Thank you kindly in advance.

9 Replies 9

Arne Bier
VIP
VIP

The import file certainly is fussy. 

Are you experiencing the issue only when the template is edited in Excel, and then subsequently imported into ISE? Does Excel save it in UTF-8 format?

I created a new Sponsor Portal in ISE 3.4p1 and used some German wording. My template looks like this

Vorname:,Nachname:,Email:,Händy:,Unternehmen:,Person being visited (email):,Grund für Besuch:
Arne,Bier,abier@somemail.com,+615551234,Rivernet,Bob@email.com,Arbeit

The import succeeded. I have to admit that I am using an English locale browser - but I don't expect that to be an issue. Using Chrome 134.

I made another one with the forward slashes in the Vor and Nach Name. That also worked.

Vorname / First Name:,Nachname / Nach Name:,Email:,Händy:,Unternehmen:,Person being visited (email):,Grund für Besuch:
Bob,Builder,bob@email.com,+615551234,Rivernet,Mary@email.com,Research

I edited the CSV file in Notepad++ using UTF-8 mode too.

Have you tried putting double quotes around EVERY field (including the header)?

 

Hi Arne, thank you for your valuable feedback.

I experience this issue regardless of the method of editing.

I tried, only using Notepad++, copying both your templates, chrome and edge, with or without slashes, with quotation marks around every field, with or with the asteriks at the beginning of each field:

"* Vorname / First name:","* Nachname / Last name:","* Unternehmen / Company:","* Grund für Besuch / Reason for visit:"
"bob","builder","Buildingcompany","Work"

"Vorname / First name:","Nachname / Last name:","Unternehmen / Company:","Grund für Besuch / Reason for visit:"
"bob","builder","Buildingcompany","Work"

Vorname / First name:,Nachname / Last name:,Unternehmen / Company:,Grund für Besuch / Reason for visit:
bob,builder,Buildingcompany,Work

to just paste a few.

They all still generate the same error that I stated in my original post.

Just for clarification, where are the asteriks even coming from in the template? Are they supposed to mark mandatory fields because it does corrospond to that in the portal, but non mandatory fields aren't even generated in the template so it does not really make sense...

The only difference that I can still make out is our ISE version, upgrading that will prove rather difficult though.

Again, no clue what I might be doing differently or wrong, but there has got to be something.

Any other ideas?

Many thanks again for your time and effort.

The asterisk represents fields that are mandatory. In my example if I made Vorname and Nachname mandatory, then they get the "* " prefixed to the field names. But the other non-mandatory fields are in the template - 

My template:

* Vorname / First Name:,* Nachname / Nach Name:,Email:,Unternehmen:,Person being visited (email):,Grund für Besuch:

Corresponds to the part shown in red, even though there are potentially other fields we could use:

 

ArneBier_1-1743643440946.png

 

My other suggestion was to see if you could enable some debugs and then see what it spits out during a failed import

ArneBier_2-1743648700578.png

 

In my lab I didn't generate any errors, but I saw this in the guest.log 

On the CLI of the node with DEBUGs enabled, you can see the output live with

show logging application guest.log tail

2025-04-03 12:46:28,911 DEBUG  [https-jsse-nio-172.22.131.174-8445-exec-6][[]] cpm.sponsorportal.actions.api.BaseSponsorAction -::::netadmin-ab:- SPONSOR_PORTAL--execute action...
2025-04-03 12:46:28,928 INFO   [https-jsse-nio-172.22.131.174-8445-exec-6][[]] cpm.guestaccess.apiservices.sponsor.GuestUserCreateService -::::netadmin-ab:- Validate Import file : /opt/CSCOcpm/temp/importGuests6277187692726713900csv
2025-04-03 12:46:28,929 INFO   [https-jsse-nio-172.22.131.174-8445-exec-6][[]] cpm.guestaccess.imhandler.sponsor.SponsorGroupHandler -::::netadmin-ab:- getting SponsorGroup by executing custom get call SponsorGroupHandler.get(sponsorGroupId)
2025-04-03 12:46:28,948 INFO   [https-jsse-nio-172.22.131.174-8445-exec-6][[]] cpm.guestaccess.apiservices.sponsor.GuestUserCreateService -::::netadmin-ab:- Import File RecordsCount : 1
2025-04-03 12:46:28,994 DEBUG  [https-jsse-nio-172.22.131.174-8445-exec-6][[]] cpm.sponsorportal.actions.impl.ImportGuestsAction -::::netadmin-ab:- SPONSOR_PORTAL--: imported

 

This is certainly worth exploring. Thank you as well for the explanation!

I activated debug logs for the guest.log and I was able to see this output in the CLI:

Debug log sponsor.png

I marked in the top left the message that I downloaded a fresh, empty template and then just reimported it without any values, just the header, and It generated this error "can't open file".

Of course I also tried it with all the different versions again, renamed the csv (I thought maybe it's annoyed by the brackets in the file name, but "testfile.csv" didn't work either), different values, different header fields etc. - they all generate the same error message "can't open file", any clue as to why this may be and/or how to fix it?

Thank you once again for your time and helpful advice so far!

ha ha - maybe we're getting closer. Have you tried TRACE, instead of DEBUG mode? I spoke with a TAC engineer the other day and they told me that this is even more detailed than DEBUG. Perhaps the developers have to write their code to take advantage of it, but give it a go. Perhaps it a bit more verbose than what you showed.  Did you see any lines in the logging with "DEBUG" status?  I enabled DEBUG exactly as show in my earlier screenshot - according to this Cisco document.

 

 

Half a day of looking at textfiles leads me to these logs. Not sure of the order of these logs, but i have not seen anything of note before the "Validation Failed" line. After that are some interesting trace and debug lines, though I am not sure how to understand them.

So first line it tells me that the opening of the file failed. Then there is a bunch of nothing and at the end of the first paragraph it generates the error message that appears in the webgui.

Then there is a bit that I omitted since nothing of note was there - until the start of the second paragraph where I assume it just checks the difference between the "found on portal are" and "found are" from the .csv?

In the middle of the second paragraph it also tries to retrieve some values from "dictionary keys" which I don't really follow, however, after that, it at least correctly lists the 4 mandatory fields but also states immediately after each value that the "list contains null key". Again, not sure what that really means. Also not sure if this is even referring to the "testfile.csv" since all of the values start with "ui" which I assume stand for user interface in this case, which would lead me to believe that it has something to do with the webgui aswell... but what do I know.

Here is the log:

2025-04-03 14:08:18,140 ERROR  [https-jsse-nio-"ip address"-8445-exec-4][[]] cisco.cpm.guestaccess.validation.GuestAccessValidationException -:NULL:::username:- Validation Message Failed to open file : testfile.csv
2025-04-03 14:08:18,140 TRACE  [https-jsse-nio-"ip address"-8445-exec-4][[]] cisco.cpm.guestaccess.dictionary.DictionaryManager -:NULL:::username:- Entering getDictionaryvalues for sessionf2912136-833e-4ec1-8640-7c4235c465c2
2025-04-03 14:08:18,140 TRACE  [https-jsse-nio-"ip address"-8445-exec-4][[]] cisco.cpm.guestaccess.dictionary.DictionaryHelper -:NULL:::username:- Creating dictionary helper for session with idf2912136-833e-4ec1-8640-7c4235c465c2
2025-04-03 14:08:18,140 TRACE  [https-jsse-nio-"ip address"-8445-exec-4][[]] cpm.guestaccess.dictionary.source.LanguageTemplateValueRetriever -:NULL:::username:- LanguageTemplateValueRetriever setup for portal with name :Sponsor Portal fuer Gastaccounterstellung
2025-04-03 14:08:18,140 TRACE  [https-jsse-nio-"ip address"-8445-exec-4][[]] cpm.guestaccess.dictionary.source.LanguageTemplateValueRetriever -:NULL:::username:- Getting language for portal :Sponsor Portal fuer Gastaccounterstellung
2025-04-03 14:08:18,140 TRACE  [https-jsse-nio-"ip address"-8445-exec-4][[]] cpm.guestaccess.dictionary.source.LanguageTemplateValueRetriever -:NULL:::username:- Language for portal :English
2025-04-03 14:08:18,142 TRACE  [https-jsse-nio-"ip address"-8445-exec-4][[]] cisco.cpm.guestaccess.dictionary.DictionaryHelper -:NULL:::username:- Retrieving values for following count of dictionary keys 1
2025-04-03 14:08:18,142 TRACE  [https-jsse-nio-"ip address"-8445-exec-4][[]] cisco.cpm.guestaccess.dictionary.DictionaryHelper -:NULL:::username:- Retrieved dictionary value for key ui_import_file_corrupt_error is:The import file must be a .csv file and use the correct format. Download and use the template file and try again.


2025-04-03 14:08:24,527 DEBUG  [https-jsse-nio-"ip address"-8445-exec-1][[]] cpm.guestaccess.apiservices.sponsor.GuestUserCreateService -:NULL:::username:- Number of attributes found on Portal are : 4
2025-04-03 14:08:24,527 DEBUG  [https-jsse-nio-"ip address"-8445-exec-1][[]] cpm.guestaccess.apiservices.sponsor.GuestUserCreateService -:NULL:::username:- Number of total attributes found are : 4
2025-04-03 14:08:24,527 TRACE  [https-jsse-nio-"ip address"-8445-exec-1][[]] cisco.cpm.guestaccess.dictionary.DictionaryManager -:NULL:::username:- Entering getDictionaryvalues for sessionf2912136-833e-4ec1-8640-7c4235c465c2
2025-04-03 14:08:24,527 TRACE  [https-jsse-nio-"ip address"-8445-exec-1][[]] cisco.cpm.guestaccess.dictionary.DictionaryHelper -:NULL:::username:- Creating dictionary helper for session with idf2912136-833e-4ec1-8640-7c4235c465c2
2025-04-03 14:08:24,527 TRACE  [https-jsse-nio-"ip address"-8445-exec-1][[]] cpm.guestaccess.dictionary.source.LanguageTemplateValueRetriever -:NULL:::username:- LanguageTemplateValueRetriever setup for portal with name :Sponsor Portal fuer Gastaccounterstellung
2025-04-03 14:08:24,527 TRACE  [https-jsse-nio-"ip address"-8445-exec-1][[]] cpm.guestaccess.dictionary.source.LanguageTemplateValueRetriever -:NULL:::username:- Getting language for portal :Sponsor Portal fuer Gastaccounterstellung
2025-04-03 14:08:24,527 TRACE  [https-jsse-nio-"ip address"-8445-exec-1][[]] cpm.guestaccess.dictionary.source.LanguageTemplateValueRetriever -:NULL:::username:- Language for portal :English
2025-04-03 14:08:24,529 TRACE  [https-jsse-nio-"ip address"-8445-exec-1][[]] cisco.cpm.guestaccess.dictionary.DictionaryHelper -:NULL:::username:- Retrieving values for following count of dictionary keys 8
2025-04-03 14:08:24,529 TRACE  [https-jsse-nio-"ip address"-8445-exec-1][[]] cisco.cpm.guestaccess.dictionary.DictionaryHelper -:NULL:::username:- Retrieved dictionary value for key ui_first_name_label is:Vorname / First name:
2025-04-03 14:08:24,529 DEBUG  [https-jsse-nio-"ip address"-8445-exec-1][[]] cisco.cpm.guestaccess.dictionary.DictionaryHelper -:NULL:::username:- List contains null key.
2025-04-03 14:08:24,529 TRACE  [https-jsse-nio-"ip address"-8445-exec-1][[]] cisco.cpm.guestaccess.dictionary.DictionaryHelper -:NULL:::username:- Retrieved dictionary value for key ui_last_name_label is:Nachname / Last name:
2025-04-03 14:08:24,529 DEBUG  [https-jsse-nio-"ip address"-8445-exec-1][[]] cisco.cpm.guestaccess.dictionary.DictionaryHelper -:NULL:::username:- List contains null key.
2025-04-03 14:08:24,529 TRACE  [https-jsse-nio-"ip address"-8445-exec-1][[]] cisco.cpm.guestaccess.dictionary.DictionaryHelper -:NULL:::username:- Retrieved dictionary value for key ui_company_label is:Unternehmen / Company:
2025-04-03 14:08:24,529 DEBUG  [https-jsse-nio-"ip address"-8445-exec-1][[]] cisco.cpm.guestaccess.dictionary.DictionaryHelper -:NULL:::username:- List contains null key.
2025-04-03 14:08:24,529 TRACE  [https-jsse-nio-"ip address"-8445-exec-1][[]] cisco.cpm.guestaccess.dictionary.DictionaryHelper -:NULL:::username:- Retrieved dictionary value for key ui_reason_visit_label is:Grund für Besuch / Reason for visit:
2025-04-03 14:08:24,529 DEBUG  [https-jsse-nio-"ip address"-8445-exec-1][[]] cisco.cpm.guestaccess.dictionary.DictionaryHelper -:NULL:::username:- List contains null key.

 

any new ideas?

Arne Bier
VIP
VIP

I wouldn't know where to go next - I have to admit that I don't see this in my ISE 3.4p1 and I don't know if there have been any bugs resolved between your version and 3.4p1.  The filename I used does have a .csv extension (which I think ISE will expect). As for the parsing of the file, that's probably a matter for a TAC case, and then have the TAC escalate that to the ISE Sustaining Engineering (aka developers)

klnnnnng
Level 1
Level 1

Hi @Heikonis,

i am also running 3.2 and had some similar format issues in the beginning, but now everything is working smoothly.

In my case I just downloaded the CSV template and added the "password" field otherwise the user is created with a random password.

csv:

Vorname:,Nachname:,E-Mail-Adresse:,Auftragsnummer:,UserName:,password:
Marc,Marc,marc@example.com,123456,marc,marc123

Regards

 

Heikonis
Level 1
Level 1

Hello once again,

first of all, thanks to both of you for your input. Sadly, adding the password field also did not seem to have any positive impact as it does still generate the same error.

I will go ahead and open a case with cisco, I hope they can figure something out as missing out on this feature would be very unfortunate.

I will update this once I have anything figured out, if I can get something running.

Thanks again!